Skip to content

Obscure error messages #583

Open
Open
@AviKav

Description

@AviKav

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions