ariadne icon indicating copy to clipboard operation
ariadne copied to clipboard

Support `Caused by`

Open oovm opened this issue 1 year ago • 3 comments

Now we've handled textual errors pretty well, but there's another non-textual case, like runtime errors, #50, #72.

I think it can be solved by adding Caused by.

For example, IO Error should be

[E001] Error: File Not Found

Caused by:
      path/of/files

Other runtime errors can be:

[E002] Error: Runtime error, reasons...

Caused by:
      path/of/call_site1(line:col)
      path/of/call_site2(line:col)
      path/of/call_site3(line:col)

Are there any other suggestions?

This is not about compatibility, can I submit a PR for this feature?

oovm avatar Jun 02 '23 03:06 oovm

As I kind of eluded to in my longer comment on #78, I don't feel that ariadne should cover this case. The crate is intended to convert errors with an existing structure defined by the crate user and turn them into a pretty output. You can think of ariadne like a markdown-to-PDF converter, or a browser layout engine that ingests HTML and spits out the image you see on the screen. Interpreting information that is neither textual nor structural (std::io::Error is neither) falls outside the scope of the crate.

That said, I would like to see some way to incorporate ordered elements like a backtrace, but I'd prefer to do this in a more generic way that adapts to users needs better (like HTML's <li> list tag) rather than something that's specifically intended for backtraces. I admit that this will require a lot more work on the crate's internals to get there though.

zesterer avatar Jun 02 '23 12:06 zesterer

In this case, we need a mechanism to append information to the report.

oovm avatar Jun 02 '23 12:06 oovm

The current way to do that is with_note, but I want to expand this out further.

zesterer avatar Jun 02 '23 13:06 zesterer