<div dir="ltr"><div>After giving it a thought, it is clear to me, that 
before starting its run,

the tool must see entire program data (not necessarily entire program source, but a PLT-like database of type facts from other modules of the same program) just like Dialyzer does with PLT and loading entire codebase. This means it cannot be a direct drop-in replacement for `erlc`, more like a build tool with a project file which you have to provide to let it know input directories and compiler options.<br></div><div><br></div><div>And after giving it another thought, it is more within my priorities to actually use `-spec ...` blocks instead of adding new syntax.</div><div><br></div><div>Then this begins looking more like a fusion of `lib/compiler` and `lib/dialyzer` from OTP. In that case it is not a low hanging fruit anymore.<br></div><div>Will continue my thought experiment and do some experimental coding.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 6 Jun 2021 at 12:33, Nicolas Martyanoff <<a href="mailto:khaelin@gmail.com">khaelin@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Is there a reason not to use the already existing type definitions and<br>
annotations ? They are already gradual, since you are not forced to<br>
annotate everything, you have total control on the granularity (you can<br>
use any() as much as you want), and they do not require introducing what<br>
is in practice a new language (which would requires new parsers in code<br>
editors, new tools, etc.).<br>
<br>
While getting Dialyzer to the state of the art would be fantastic,<br>
writing a totally new type checker based on the same annotations would<br>
work as well, and would avoid having to maintain any type of<br>
compatibility with the current behaviour of Dialyzer.<br>
<br>
If you work on that subject, feel free to contact me in PM, I would be<br>
happy to test your work on my codebases.<br>
<br>
-- <br>
Nicolas Martyanoff<br>
<a href="http://snowsyn.net" rel="noreferrer" target="_blank">http://snowsyn.net</a><br>
<a href="mailto:khaelin@gmail.com" target="_blank">khaelin@gmail.com</a><br>
</blockquote></div></div>