[PATCH] D67695: [clangd] Implement getBeginning for overloaded operators.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 26 06:38:13 PDT 2019
hokein added inline comments.
================
Comment at: clang-tools-extra/clangd/SourceCode.cpp:286
- Before = Lexer::GetBeginningOfToken(Before, SM, LangOpts);
- Token Tok;
- if (Before.isValid() &&
- !Lexer::getRawToken(Before, Tok, SM, LangOpts, false) &&
- Tok.is(tok::raw_identifier))
- return Before; // Case 2.
- return InputLoc; // Case 1 or 3.
+ Token CurrentTok;
+ SourceLocation CurrentTokBeginning =
----------------
ilya-biryukov wrote:
> If we use `IgnoreWhitespace = false`, I think we can simplify to:
> ```
> // Location in the middle of some token.
> if (BeforeLoc == CurrentLoc)
> return CurrentLoc;
>
> // Whitespace is not interesting.
> if (CurrentTok.Kind == tok::whitespace)
> return BeforeTok;
> if (BeforeTok.Kind == tok::whitespace)
> return CurrentTok;
>
> // The cursor is at token boundary, i.e. `Before^Current`.
> // Prefer identifiers to other tokens.
> if (CurrentTok.Kind == tok::raw_identifier)
> return CurrentLoc;
> if (BeforeTok.Kind == tok::raw_identifier)
> return BeforeLoc;
> // And overloaded operators to other tokens.
> if (isOperator(CurrentTok.Kind))
> return CurrentLoc;
> if (isOperator(BeforeTok.Kind))
> return BeforeLoc;
> return CurrentLoc;
> ```
>
> That would have the same semantics, but is arguably simpler. WDYT?
Good point, that would simplify the logic.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67695/new/
https://reviews.llvm.org/D67695
More information about the cfe-commits
mailing list