================
@@ -84,6 +84,21 @@ SourceLocation Sema::getLocForEndOfToken(SourceLocation Loc,
unsigned Offset) {
return Lexer::getLocForEndOfToken(Loc, Offset, SourceMgr, LangOpts);
}
+SourceRange Sema::getRangeForNextToken(SourceLocation Loc,
+ bool IncludeComments) {
+ if (!Loc.isValid())
+ return SourceRange();
+ std::optional<Token> NextToken =
+ Lexer::findNextToken(Loc, SourceMgr, LangOpts, IncludeComments);
----------------
ojhunt wrote:
I'm using this one function for two purposes:
* Finding the (presumed) comma and stepping over it
* Finding the start of the next token
It seemed like a reasonable approach, and given we're producing a fixit
diagnostic I don't think the perf matters.
Basically what I'm trying to do is say given an unused capture:
```cpp
auto foo = [a, unused, b] ... // just a pile of white space for
illustrative purposes
auto bar = [a, unused, /* ... */ b] ...
auto wibble = [a, /* ... */ unused, b] ...
auto thingy = [a, unused /* ... */, b] ...
```
produce fixits that result in
```cpp
auto foo = [a, b] ... // just a pile of white space for illustrative purposes
auto bar = [a, /* ... */ b] ...
auto wibble = [a, b] ...
auto thingy = [a, b] ...
```
and for that what we want to do is find the end of the comma, and the start of
the next token, simply using the "findNextToken" to just get those tokens seems
reasonable.
Of course as we discussed in discord, that function doesn't handle macros, and
handling this correctly for macros would imply the Sema "wrapper" excludes
macro wrappers (so would not just be a wrapper) or every user has to check for
macros.
https://github.com/llvm/llvm-project/pull/141148
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits