Mihaela Chirea - SAOC 2020 Milestone 2 Update 2 - Improving DMD as a Library
Jacob Carlborg
doob at me.com
Sun Nov 8 16:18:48 UTC 2020
On 2020-11-07 12:28, Mihaela Chirea wrote:
> Currently, the CPPNamespaceDeclaration location starts at `extern`, just
> like Nspace, but moving it to the exact start of the name is possible.
> Would you consider this a better option?
Absolutely not. I feel like I have already mentioned this several times:
The start position needs to point to the first byte of the AST node. If
you want to get the location of some specific part of a node, you should
access the smallest sub node and then re-lex the source range the sub
node occupies (when source ranges are available). Then you can get the
location of the specific token you're interested in, like the
identifier. At this point you already know the semantic meanings of the
tokens, so it shouldn't be any problem.
> - StaticForeachDeclaration: this one contains a StaticForeach which
> already starts at `static` so I'm not sure if adding it here as well
> would be necessary
All AST nodes should have a location. Otherwise more special casing in
the code is required when operating on the nodes. Do you know why there
are two nodes? Do they have the same meaning?
Either you can duplicate the location, or can (possibly) declare a
method in `StaticForeachDeclaration` which forwards to the location in
`StaticForeach`.
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list