sammccall added a comment.

I'm playing with a prototype of the token-based approach, a couple of 
follow-ups from that.

I've split out functions to handle file/macro/ast from locateSymbolAt in 
e7de00cf974a4e30d4900518ae8473a117efbd6c 
<https://reviews.llvm.org/rGe7de00cf974a4e30d4900518ae8473a117efbd6c> - 
hopefully an easy merge, you're adding another one.

I think having this trigger where the identifier is an actual token in the 
program is a surprisingly invasive change and runs a strong risk of confusing 
users (who can't distinguish these textual heuristics from normal go-to-def 
behaviour, and rely on its accuracy), and we shouldn't do it without a lot more 
testing.
I think the way to implement this is to call getMacroArgExpandedLocation on the 
start of the "token" we found, and feed the result into 
TokenBuffer::expandedTokens(SourceRange). If we get an empty list back, then 
the parser didn't see this token and we're good to proceed without any overlap 
with the strict AST-based options.
This will leave comments, strings, and #ifdef'd sections should work fine, but 
not dependent or broken code. (Many cases of broken code can be fixed using 
RecoveryExpr which is finally going to land)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72874/new/

https://reviews.llvm.org/D72874



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to