<div dir="ltr">My opinion is that if the patch is independent, it could be just as well be included now (if accepted) -- the longer it is in pu, the more chances are to catch problems with it.<div><br></div><div style>Regarding the other issue,</div>

<div style><span style="font-family:arial,sans-serif;font-size:13px">> For example, if I write in foo.erl ?MODULE at line</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">> </span><span style="font-family:arial,sans-serif;font-size:13px">1 and column 10, I want the resulting atom 'foo' to begin at line 1 and</span><br style="font-family:arial,sans-serif;font-size:13px">

<span style="font-family:arial,sans-serif;font-size:13px">> </span><span style="font-family:arial,sans-serif;font-size:13px">column 10 and end at line 1 and column 17, not column 13; second,</span><br style="font-family:arial,sans-serif;font-size:13px">

<span style="font-family:arial,sans-serif;font-size:13px">> </span><span style="font-family:arial,sans-serif;font-size:13px">for non-builtin macros (e.g. not ?MODULE), a new attribute 'from' should</span><br style="font-family:arial,sans-serif;font-size:13px">

<span style="font-family:arial,sans-serif;font-size:13px">> </span><span style="font-family:arial,sans-serif;font-size:13px">be created, of type {'from',[{File::string(),</span><span style="font-family:arial,sans-serif;font-size:13px">Start::location(),End::</span><span style="font-family:arial,sans-serif;font-size:13px">location()}]}.</span><br>

</div><div style><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">How would you handle macros with arguments that expand to complex expressions? It's not as easy to fake the ending or use 'from'.</span></div>

<div style><br></div><div style>regards,</div><div style>Vlad</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 21, 2013 at 12:42 PM, Anthony Ramine <span dir="ltr"><<a href="mailto:n.oxyde@gmail.com" target="_blank">n.oxyde@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I created the 'file' attribute because erl_lint and its friends<br>
used to zip the file and line number together in a tuple, breaking<br>
the assumption that if the location is a tuple, it is a pair of<br>
line and column numbers, that also doest not respect the AST<br>
documentation from absform.xml. The two first commits are also<br>
in the compile-column-numbers branch (the 'file' thing and a<br>
bugfix).<br>
<br>
I should have made it clear in the initial mail, but I did write<br>
that in my commit messages :)<br>
<br>
Regarding diagnostics and macro tracking more generally, this should<br>
be done in step: first, a token/AST node range (its begin and end<br>
locations) coming from a macro expansion should reflect what is written<br>
in the source file. For example, if I write in foo.erl ?MODULE at line<br>
1 and column 10, I want the resulting atom 'foo' to begin at line 1 and<br>
column 10 and end at line 1 and column 17, not column 13; second,<br>
for non-builtin macros (e.g. not ?MODULE), a new attribute 'from' should<br>
be created, of type {'from',[{File::string(),Start::location(),End::location()}]}.<br>
We don't actually need special tokens.<br>
<br>
In the end, that is not related to the topic at hand, which is<br>
to teach erl_scan to return end locations.<br>
<br>
The one thing we should discuss right now is whether this patch should<br>
be included separately right now, or should I come back when I've<br>
finished teaching erl_parse to return locations range, epp to track macro<br>
expansions and compile to actually use all these informations to spit<br>
out related source code in the shell when compilation fails.<br>
<br>
Regards,<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Anthony Ramine<br>
<br>
Le 21 mars 2013 à 12:20, Vlad Dumitrescu a écrit :<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> On Thu, Mar 21, 2013 at 10:33 AM, Anthony Ramine <<a href="mailto:n.oxyde@gmail.com">n.oxyde@gmail.com</a>> wrote:<br>
> Maybe, but still if we want diagnostics we need to properly track<br>
> macro expansions.<br>
><br>
> See, it actually helps checking the code :-) Why didn't you mention that there is a new token attribute, "file"? Suddenly all makes more sense :-)<br>
><br>
> But there is something missing (or maybe it is in the pipeline) -- the really useful part would be if the tokens produced by expanding a macro would point to the file defining it, right?<br>
><br>
> On the other hand, I would sometimes want to have the tokens for the non-preprocessed source (for use by the editor) and it would be extra nice if these could be produced by a single scanning. Maybe we could have special tokens for that, that are treated by other tools as whitespace? In this case, the 'end' position is crucial to have because the special macro tokens will overlap with their expansion.<br>


><br>
> Maybe this is a discussion better taken in a separate thread, on erlang-questions?<br>
><br>
> regards,<br>
> /Vlad<br>
<br>
</div></div></blockquote></div><br></div>