ilya-biryukov added inline comments.

================
Comment at: clang/lib/Lex/PPDirectives.cpp:1521
   Tok[0].setAnnotationValue(AnnotationVal);
-  EnterTokenStream(std::move(Tok), 1, true);
+  EnterTokenStream(std::move(Tok), 1, true, /*IsReinject*/ true);
 }
----------------
rsmith wrote:
> I think it'd be more useful to treat this as a new token. But that's not a 
> strong preference.
Ah, there were too many changes and I missed this one. Definitely agree, 
clients can filter out annotation tokens themselves, if needed.


================
Comment at: clang/lib/Lex/Pragma.cpp:370
   // Push the tokens onto the stack.
-  EnterTokenStream(TokArray, PragmaToks.size(), true, true);
+  EnterTokenStream(TokArray, PragmaToks.size(), true, true,
+                   /*IsReinject*/ false);
----------------
rsmith wrote:
> I think this case is a reinjection; we've copied some tokens inside __pragma 
> out into a duplicate position in the token stream. But I guess it doesn't 
> matter because the tokens never escape the outer Lex function anyway.
Yeah, my logic is that it's not a re-injection in the sense that they were 
never the phase 4 tokens before.


================
Comment at: clang/lib/Lex/Preprocessor.cpp:1136
     EnterTokenStream(std::move(ToksCopy), Toks.size(),
-                     /*DisableMacroExpansion*/ true);
+                     /*DisableMacroExpansion*/ true, IsReinject);
   };
----------------
rsmith wrote:
> I think this should always be `false`: the tokens we're producing here have 
> never been emitted at `LexLevel` 0 before.
Ah, totally, we lexed the original tokens in this function...
Fixed, thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D59885



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

Reply via email to