Support for diagnostic notes without file locations
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.
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".
Ah yes this is a good idea
Actually, I think we can keep the note but it should point to the import "substrate"; statement?
Actually, I think we can keep the note but it should point to the
import "substrate";statement?
Even better.