diff --git a/clang-tools-extra/clangd/AST.h b/clang-tools-extra/clangd/AST.h --- a/clang-tools-extra/clangd/AST.h +++ b/clang-tools-extra/clangd/AST.h @@ -109,7 +109,6 @@ QualType declaredType(const TypeDecl *D); /// Retrieves the deduced type at a given location (auto, decltype). -/// Retuns None unless Loc starts an auto/decltype token. /// It will return the underlying type. llvm::Optional getDeducedType(ASTContext &, SourceLocation Loc); diff --git a/clang-tools-extra/clangd/AST.cpp b/clang-tools-extra/clangd/AST.cpp --- a/clang-tools-extra/clangd/AST.cpp +++ b/clang-tools-extra/clangd/AST.cpp @@ -25,7 +25,6 @@ #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" #include "clang/Index/USRGeneration.h" -#include "clang/Lex/Lexer.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/STLExtras.h" @@ -417,16 +416,8 @@ llvm::Optional getDeducedType(ASTContext &ASTCtx, SourceLocation Loc) { - Token Tok; - // Only try to find a deduced type if the token is auto or decltype. - if (!Loc.isValid() || - Lexer::getRawToken(Loc, Tok, ASTCtx.getSourceManager(), - ASTCtx.getLangOpts(), false) || - !Tok.is(tok::raw_identifier) || - !(Tok.getRawIdentifier() == "auto" || - Tok.getRawIdentifier() == "decltype")) { + if (!Loc.isValid()) return {}; - } DeducedTypeVisitor V(Loc); V.TraverseAST(ASTCtx); if (V.DeducedType.isNull())