solang icon indicating copy to clipboard operation
solang copied to clipboard

Support for diagnostic notes without file locations

Open xermicus opened this issue 2 years ago • 4 comments

Right now we can not display file notes if the error originates in a builtin. Example:

import "substrate";
contract Foo {
   function chain_extension() public pure {}
}

Results in

thread 'main' panicked at 'internal error: entered unreachable code: note without file position', src/sema/diagnostics.rs:171:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

We could just remove the panic and drop the note:

warning: chain_extension is already defined as a function
  ┌─ /home/glow/code/solang/test.sol:3:13
  │
3 │    function chain_extension() public pure {}
  │             ^^^^^^^^^^^^^^^

However instead of just dropping the note, it would be nice to support notes for code without a source file.

xermicus avatar May 11 '23 14:05 xermicus

In this case, the note is there to point to the location of the function definition, which doesn't exist but there is no location. So, the note should not be generated for builtin functions. Having said that, the error message itself should probably say "{} is already defined as a builtin function".

seanyoung avatar May 11 '23 15:05 seanyoung

Ah yes this is a good idea

xermicus avatar May 11 '23 15:05 xermicus

Actually, I think we can keep the note but it should point to the import "substrate"; statement?

xermicus avatar May 11 '23 15:05 xermicus

Actually, I think we can keep the note but it should point to the import "substrate"; statement?

Even better.

seanyoung avatar May 11 '23 15:05 seanyoung