Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Obscure error messages #583

Open
AviKav opened this issue Jan 2, 2024 · 3 comments
Open

Obscure error messages #583

AviKav opened this issue Jan 2, 2024 · 3 comments

Comments

@AviKav
Copy link

AviKav commented Jan 2, 2024

I came across some confusing error messages while working on https://github.com/AviKav/silicon.ex:


I got ** (ErlangError) Erlang error: :invalid_struct when I forgot to rename

#[derive(NifStruct)]
#[module = "Silicon.FormatOptions"]
struct FormatOptions {

to

#[derive(NifStruct)]
#[module = "Silicon.Options.Format"]
struct FormatOptions {

I've gotten

** (ErlangError) Erlang error: "Could not decode field :image_options on %FormatOptions{}"

for having the wrong value all the way in image_options.shadow_adder.background.

%FormatOptions{} was a red herring since I thought it was an Elixir struct's old name that was hanging around for some reason, when it actuality it was a Rust type.


I think these error messages should be specific of where or what the issue is.

As of current I'd need to provide the user with a validation function in order to give useful error information.
This is a third place, in addition to typespecs and Rust types, where I'd need to maintain type information.
Unless something like https://github.com/Qqwy/elixir-type_check is used.

@filmor
Copy link
Member

filmor commented Feb 11, 2024

Do you have concrete suggestions?

@AviKav
Copy link
Author

AviKav commented Feb 11, 2024

  1. Erlang error: :invalid_struct should detail which rust struct it's having difficulty compiling.
    a. And include why if there are multiple possible reasons.
  2. Erlang error: "Could not decode field :image_options on %FormatOptions{}" should:
    a. Explicitly say "rust struct" and not use Elixir map notation when talking about Rust structs.
    b. Rather than stating the root field, state either the leaf field where term conversion is failing or the path to said leaf.

@AviKav
Copy link
Author

AviKav commented Feb 11, 2024

Sorry about that

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants