ilya-biryukov added inline comments.

================
Comment at: lib/Sema/SemaCodeComplete.cpp:4109
+  if (CodeCompleter->includeFixIts()) {
+    const SourceRange OpRange(OpLoc, OpLoc.getLocWithOffset(IsArrow ? 2 : 1));
+    CompletionSucceded =
----------------
yvvan wrote:
> ilya-biryukov wrote:
> > I'd use token ranges here to avoid assumptions about sizes of tokens, e.g. 
> > `CreateReplacemen(CharSourceRange::getTokenRange(OpLoc, OpLoc), IsArrow ? 
> > '.' : '->')`
> > There are complicated cases like `\` that end of the line and macros and 
> > it's definitely better to use an abstraction that hides those cases.
> the problem is that I need the range, not just a location.... and I don't 
> know how to extract it here. is there a way to get next token location here?
IIUC, using `CharSourceRange::getTokenRange(OpLoc, OpLoc)` will do what you 
want.
When `CharSourceRange` is a token range, the client code should measurements 
the token length and the producing code would use the starting location of the 
last token.
Here are the relevant bits from the comment of the `CharSourceRange`:
```
/// In the token range case, the
/// size of the last token must be measured to determine the actual end of the
/// range.
 ```


https://reviews.llvm.org/D41537



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

Reply via email to