ilya-biryukov marked an inline comment as not done.
ilya-biryukov added inline comments.


================
Comment at: clang/lib/Lex/Preprocessor.cpp:956-957
   --LexLevel;
+  if (OnToken)
+    OnToken(Result, Source);
 }
----------------
ilya-biryukov wrote:
> rsmith wrote:
> > This seems like it's going to be extremely hard to use. If you just want 
> > the expanded token stream, then removing all the other calls to `OnToken` 
> > and only calling it here when `LexLevel == 0` will give you that.
> I've tried `LexLevel == 0 && IsNewToken` and it **almost** works.
> The only trouble left is dealing with the delayed parsing. E.g. I'm getting 
> the callbacks for the same tokens multiple times in cases like parsing of 
> method bodies.
> 
> Any ideas on how to best tackle this?
> 
> The example is:
> ```
> struct X {
>   int method() { return 10; }
>   int a = 10;
> };
> ```
> 
> Seeing multiple callbacks for `{ return 10; }` and `= 10;`, want to see only 
> the first one.
It almost works now, see the update revision.
Almost no tokens get reported by the callback twice now, except the following 
case.
Input:
```
struct X {
  int method() { return method(); }
};
```
After the body of the class, we get a an extra callback for `)` token from one 
of the functions under `ParsedLexedMethodDef`.
This seems to be happening only for parenthesis.


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