Author: Alex Lorenz Date: 2019-12-04T16:55:25-08:00 New Revision: c0ee0224c4cf52bc6ba74dec88b30b850deca523
URL: https://github.com/llvm/llvm-project/commit/c0ee0224c4cf52bc6ba74dec88b30b850deca523 DIFF: https://github.com/llvm/llvm-project/commit/c0ee0224c4cf52bc6ba74dec88b30b850deca523.diff LOG: [clangd] NFC, add getLangOpts helper to ParsedAST The addition of the helper is split out from https://reviews.llvm.org/D69543 as suggested by Kadir. I also updated the existing uses to use the new API. Added: Modified: clang-tools-extra/clangd/ClangdServer.cpp clang-tools-extra/clangd/HeaderSourceSwitch.cpp clang-tools-extra/clangd/Hover.cpp clang-tools-extra/clangd/ParsedAST.h clang-tools-extra/clangd/SemanticSelection.cpp clang-tools-extra/clangd/XRefs.cpp clang-tools-extra/clangd/refactor/Rename.cpp clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp clang-tools-extra/clangd/unittests/CollectMacrosTests.cpp clang-tools-extra/clangd/unittests/SelectionTests.cpp clang-tools-extra/clangd/unittests/SourceCodeTests.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp index 6c5fabdce5c3..e9e03dbc3742 100644 --- a/clang-tools-extra/clangd/ClangdServer.cpp +++ b/clang-tools-extra/clangd/ClangdServer.cpp @@ -312,8 +312,8 @@ void ClangdServer::prepareRename(PathRef File, Position Pos, const auto &SM = AST.getSourceManager(); SourceLocation Loc = SM.getMacroArgExpandedLocation(getBeginningOfIdentifier( - Pos, AST.getSourceManager(), AST.getASTContext().getLangOpts())); - auto Range = getTokenRange(SM, AST.getASTContext().getLangOpts(), Loc); + Pos, AST.getSourceManager(), AST.getLangOpts())); + auto Range = getTokenRange(SM, AST.getLangOpts(), Loc); if (!Range) return CB(llvm::None); // "rename" is not valid at the position. diff --git a/clang-tools-extra/clangd/HeaderSourceSwitch.cpp b/clang-tools-extra/clangd/HeaderSourceSwitch.cpp index 698f2460fea5..f90e46a24f32 100644 --- a/clang-tools-extra/clangd/HeaderSourceSwitch.cpp +++ b/clang-tools-extra/clangd/HeaderSourceSwitch.cpp @@ -97,7 +97,7 @@ llvm::Optional<Path> getCorrespondingHeaderOrSource(const Path &OriginalFile, // // For each symbol in the original file, we get its target location (decl or // def) from the index, then award that target file. - bool IsHeader = isHeaderFile(OriginalFile, AST.getASTContext().getLangOpts()); + bool IsHeader = isHeaderFile(OriginalFile, AST.getLangOpts()); Index->lookup(Request, [&](const Symbol &Sym) { if (IsHeader) AwardTarget(Sym.Definition.FileURI); diff --git a/clang-tools-extra/clangd/Hover.cpp b/clang-tools-extra/clangd/Hover.cpp index c14ff1b3fe63..9053bc08b4ec 100644 --- a/clang-tools-extra/clangd/Hover.cpp +++ b/clang-tools-extra/clangd/Hover.cpp @@ -367,8 +367,7 @@ HoverInfo getHoverContents(const DefinedMacro &Macro, ParsedAST &AST) { SourceLocation StartLoc = Macro.Info->getDefinitionLoc(); SourceLocation EndLoc = Macro.Info->getDefinitionEndLoc(); if (EndLoc.isValid()) { - EndLoc = Lexer::getLocForEndOfToken(EndLoc, 0, SM, - AST.getASTContext().getLangOpts()); + EndLoc = Lexer::getLocForEndOfToken(EndLoc, 0, SM, AST.getLangOpts()); bool Invalid; StringRef Buffer = SM.getBufferData(SM.getFileID(StartLoc), &Invalid); if (!Invalid) { @@ -391,7 +390,7 @@ llvm::Optional<HoverInfo> getHover(ParsedAST &AST, Position Pos, const SourceManager &SM = AST.getSourceManager(); llvm::Optional<HoverInfo> HI; SourceLocation SourceLocationBeg = SM.getMacroArgExpandedLocation( - getBeginningOfIdentifier(Pos, SM, AST.getASTContext().getLangOpts())); + getBeginningOfIdentifier(Pos, SM, AST.getLangOpts())); if (auto Deduced = getDeducedType(AST.getASTContext(), SourceLocationBeg)) { // Find the corresponding decl to populate kind and fetch documentation. @@ -435,9 +434,8 @@ llvm::Optional<HoverInfo> getHover(ParsedAST &AST, Position Pos, tooling::applyAllReplacements(HI->Definition, Replacements)) HI->Definition = *Formatted; - HI->SymRange = - getTokenRange(AST.getASTContext().getSourceManager(), - AST.getASTContext().getLangOpts(), SourceLocationBeg); + HI->SymRange = getTokenRange(AST.getASTContext().getSourceManager(), + AST.getLangOpts(), SourceLocationBeg); return HI; } diff --git a/clang-tools-extra/clangd/ParsedAST.h b/clang-tools-extra/clangd/ParsedAST.h index 0b4a6ab73df8..f2afc264e23a 100644 --- a/clang-tools-extra/clangd/ParsedAST.h +++ b/clang-tools-extra/clangd/ParsedAST.h @@ -77,6 +77,10 @@ class ParsedAST { return getASTContext().getSourceManager(); } + const LangOptions &getLangOpts() const { + return getASTContext().getLangOpts(); + } + /// This function returns top-level decls present in the main file of the AST. /// The result does not include the decls that come from the preamble. /// (These should be const, but RecursiveASTVisitor requires Decl*). diff --git a/clang-tools-extra/clangd/SemanticSelection.cpp b/clang-tools-extra/clangd/SemanticSelection.cpp index 91a5582ac29a..cbbf31f1b05b 100644 --- a/clang-tools-extra/clangd/SemanticSelection.cpp +++ b/clang-tools-extra/clangd/SemanticSelection.cpp @@ -30,7 +30,7 @@ llvm::Expected<std::vector<Range>> getSemanticRanges(ParsedAST &AST, Position Pos) { std::vector<Range> Result; const auto &SM = AST.getSourceManager(); - const auto &LangOpts = AST.getASTContext().getLangOpts(); + const auto &LangOpts = AST.getLangOpts(); auto FID = SM.getMainFileID(); auto Offset = positionToOffset(SM.getBufferData(FID), Pos); diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp index de10e3c48e20..8bcc268d1b18 100644 --- a/clang-tools-extra/clangd/XRefs.cpp +++ b/clang-tools-extra/clangd/XRefs.cpp @@ -191,9 +191,8 @@ std::vector<LocatedSymbol> locateSymbolAt(ParsedAST &AST, Position Pos, // Macros are simple: there's no declaration/definition distinction. // As a consequence, there's no need to look them up in the index either. - SourceLocation MaybeMacroLocation = - SM.getMacroArgExpandedLocation(getBeginningOfIdentifier( - Pos, AST.getSourceManager(), AST.getASTContext().getLangOpts())); + SourceLocation MaybeMacroLocation = SM.getMacroArgExpandedLocation( + getBeginningOfIdentifier(Pos, AST.getSourceManager(), AST.getLangOpts())); std::vector<LocatedSymbol> Result; if (auto M = locateMacroAt(MaybeMacroLocation, AST.getPreprocessor())) { if (auto Loc = makeLocation(AST.getASTContext(), @@ -366,7 +365,7 @@ std::vector<DocumentHighlight> findDocumentHighlights(ParsedAST &AST, auto References = findRefs( getDeclAtPosition(AST, SM.getMacroArgExpandedLocation(getBeginningOfIdentifier( - Pos, SM, AST.getASTContext().getLangOpts())), + Pos, SM, AST.getLangOpts())), Relations), AST); @@ -374,9 +373,8 @@ std::vector<DocumentHighlight> findDocumentHighlights(ParsedAST &AST, // diff erent kinds, deduplicate them. std::vector<DocumentHighlight> Result; for (const auto &Ref : References) { - if (auto Range = - getTokenRange(AST.getASTContext().getSourceManager(), - AST.getASTContext().getLangOpts(), Ref.Loc)) { + if (auto Range = getTokenRange(AST.getASTContext().getSourceManager(), + AST.getLangOpts(), Ref.Loc)) { DocumentHighlight DH; DH.range = *Range; if (Ref.Role & index::SymbolRoleSet(index::SymbolRole::Write)) @@ -404,7 +402,7 @@ ReferencesResult findReferences(ParsedAST &AST, Position Pos, uint32_t Limit, return Results; } auto Loc = SM.getMacroArgExpandedLocation( - getBeginningOfIdentifier(Pos, SM, AST.getASTContext().getLangOpts())); + getBeginningOfIdentifier(Pos, SM, AST.getLangOpts())); // TODO: should we handle macros, too? // We also show references to the targets of using-decls, so we include // DeclRelation::Underlying. @@ -424,8 +422,7 @@ ReferencesResult findReferences(ParsedAST &AST, Position Pos, uint32_t Limit, }), MainFileRefs.end()); for (const auto &Ref : MainFileRefs) { - if (auto Range = - getTokenRange(SM, AST.getASTContext().getLangOpts(), Ref.Loc)) { + if (auto Range = getTokenRange(SM, AST.getLangOpts(), Ref.Loc)) { Location Result; Result.range = *Range; Result.uri = URIForFile::canonicalize(*MainFilePath, *MainFilePath); @@ -470,7 +467,7 @@ ReferencesResult findReferences(ParsedAST &AST, Position Pos, uint32_t Limit, std::vector<SymbolDetails> getSymbolInfo(ParsedAST &AST, Position Pos) { const SourceManager &SM = AST.getSourceManager(); auto Loc = SM.getMacroArgExpandedLocation( - getBeginningOfIdentifier(Pos, SM, AST.getASTContext().getLangOpts())); + getBeginningOfIdentifier(Pos, SM, AST.getLangOpts())); std::vector<SymbolDetails> Results; @@ -646,7 +643,7 @@ static void fillSuperTypes(const CXXRecordDecl &CXXRD, ASTContext &ASTCtx, const CXXRecordDecl *findRecordTypeAt(ParsedAST &AST, Position Pos) { const SourceManager &SM = AST.getSourceManager(); SourceLocation SourceLocationBeg = SM.getMacroArgExpandedLocation( - getBeginningOfIdentifier(Pos, SM, AST.getASTContext().getLangOpts())); + getBeginningOfIdentifier(Pos, SM, AST.getLangOpts())); DeclRelationSet Relations = DeclRelation::TemplatePattern | DeclRelation::Underlying; auto Decls = getDeclAtPosition(AST, SourceLocationBeg, Relations); diff --git a/clang-tools-extra/clangd/refactor/Rename.cpp b/clang-tools-extra/clangd/refactor/Rename.cpp index ec4849aa024e..3f3c216c5909 100644 --- a/clang-tools-extra/clangd/refactor/Rename.cpp +++ b/clang-tools-extra/clangd/refactor/Rename.cpp @@ -397,9 +397,8 @@ llvm::Expected<FileEdits> rename(const RenameInputs &RInputs) { return (*Content)->getBuffer().str(); }; - SourceLocation SourceLocationBeg = - SM.getMacroArgExpandedLocation(getBeginningOfIdentifier( - RInputs.Pos, SM, AST.getASTContext().getLangOpts())); + SourceLocation SourceLocationBeg = SM.getMacroArgExpandedLocation( + getBeginningOfIdentifier(RInputs.Pos, SM, AST.getLangOpts())); // FIXME: Renaming macros is not supported yet, the macro-handling code should // be moved to rename tooling library. if (locateMacroAt(SourceLocationBeg, AST.getPreprocessor())) diff --git a/clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp b/clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp index 6b44edb8cd7f..f6bed9727cf1 100644 --- a/clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp +++ b/clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp @@ -238,7 +238,7 @@ class DefineOutline : public Tweak { // FIXME: We might want to consider moving method definitions below class // definition even if we are inside a source file. if (!isHeaderFile(Sel.AST.getSourceManager().getFilename(Sel.Cursor), - Sel.AST.getASTContext().getLangOpts())) + Sel.AST.getLangOpts())) return false; Source = getSelectedFunction(Sel.ASTSelection.commonAncestor()); @@ -306,9 +306,8 @@ class DefineOutline : public Tweak { // FIXME: We should also get rid of inline qualifier. const tooling::Replacement DeleteFuncBody( Sel.AST.getSourceManager(), - CharSourceRange::getTokenRange( - *toHalfOpenFileRange(SM, Sel.AST.getASTContext().getLangOpts(), - Source->getBody()->getSourceRange())), + CharSourceRange::getTokenRange(*toHalfOpenFileRange( + SM, Sel.AST.getLangOpts(), Source->getBody()->getSourceRange())), ";"); auto HeaderFE = Effect::fileEdit(SM, SM.getMainFileID(), tooling::Replacements(DeleteFuncBody)); diff --git a/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp b/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp index 1551f41a1318..ce9addb293bf 100644 --- a/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp +++ b/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp @@ -645,7 +645,7 @@ tooling::Replacement createFunctionDefinition(const NewFunction &ExtractedFunc, bool ExtractFunction::prepare(const Selection &Inputs) { const Node *CommonAnc = Inputs.ASTSelection.commonAncestor(); const SourceManager &SM = Inputs.AST.getSourceManager(); - const LangOptions &LangOpts = Inputs.AST.getASTContext().getLangOpts(); + const LangOptions &LangOpts = Inputs.AST.getLangOpts(); if (auto MaybeExtZone = findExtractionZone(CommonAnc, SM, LangOpts)) { ExtZone = std::move(*MaybeExtZone); return true; @@ -655,7 +655,7 @@ bool ExtractFunction::prepare(const Selection &Inputs) { Expected<Tweak::Effect> ExtractFunction::apply(const Selection &Inputs) { const SourceManager &SM = Inputs.AST.getSourceManager(); - const LangOptions &LangOpts = Inputs.AST.getASTContext().getLangOpts(); + const LangOptions &LangOpts = Inputs.AST.getLangOpts(); auto ExtractedFunc = getExtractedFunction(ExtZone, SM, LangOpts); // FIXME: Add more types of errors. if (!ExtractedFunc) diff --git a/clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp b/clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp index 42d0122b3382..2d4bf755f64f 100644 --- a/clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp +++ b/clang-tools-extra/clangd/refactor/tweaks/RawStringLiteral.cpp @@ -91,7 +91,7 @@ Expected<Tweak::Effect> RawStringLiteral::apply(const Selection &Inputs) { auto &SM = Inputs.AST.getSourceManager(); auto Reps = tooling::Replacements( tooling::Replacement(SM, Str, ("R\"(" + Str->getBytes() + ")\"").str(), - Inputs.AST.getASTContext().getLangOpts())); + Inputs.AST.getLangOpts())); return Effect::mainFileEdit(SM, std::move(Reps)); } diff --git a/clang-tools-extra/clangd/unittests/CollectMacrosTests.cpp b/clang-tools-extra/clangd/unittests/CollectMacrosTests.cpp index d4438e0a9a0b..8eee7550bf8e 100644 --- a/clang-tools-extra/clangd/unittests/CollectMacrosTests.cpp +++ b/clang-tools-extra/clangd/unittests/CollectMacrosTests.cpp @@ -88,7 +88,7 @@ TEST(CollectMainFileMacros, SelectedMacros) { break; auto Loc = getBeginningOfIdentifier(ExpectedRefs.begin()->start, SM, - AST.getASTContext().getLangOpts()); + AST.getLangOpts()); auto Macro = locateMacroAt(Loc, PP); assert(Macro); auto SID = getSymbolID(Macro->Name, Macro->Info, SM); diff --git a/clang-tools-extra/clangd/unittests/SelectionTests.cpp b/clang-tools-extra/clangd/unittests/SelectionTests.cpp index ec9fd4185d94..9e1a90b55e3a 100644 --- a/clang-tools-extra/clangd/unittests/SelectionTests.cpp +++ b/clang-tools-extra/clangd/unittests/SelectionTests.cpp @@ -40,7 +40,7 @@ Range nodeRange(const SelectionTree::Node *N, ParsedAST &AST) { if (!N) return Range{}; const SourceManager &SM = AST.getSourceManager(); - const LangOptions &LangOpts = AST.getASTContext().getLangOpts(); + const LangOptions &LangOpts = AST.getLangOpts(); StringRef Buffer = SM.getBufferData(SM.getMainFileID()); if (llvm::isa_and_nonnull<TranslationUnitDecl>(N->ASTNode.get<Decl>())) return Range{Position{}, offsetToPosition(Buffer, Buffer.size())}; diff --git a/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp b/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp index 0dabce2a3d64..5979261600bb 100644 --- a/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp +++ b/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp @@ -358,7 +358,7 @@ Bar* bar; auto AST = TestTU::withCode(TestCase.code()).build(); const auto &SourceMgr = AST.getSourceManager(); SourceLocation Actual = getBeginningOfIdentifier( - TestCase.points().back(), SourceMgr, AST.getASTContext().getLangOpts()); + TestCase.points().back(), SourceMgr, AST.getLangOpts()); Position ActualPos = offsetToPosition( TestCase.code(), SourceMgr.getFileOffset(SourceMgr.getSpellingLoc(Actual))); @@ -482,7 +482,7 @@ TEST(SourceCodeTests, GetMacros) { TestTU TU = TestTU::withCode(Code.code()); auto AST = TU.build(); auto Loc = getBeginningOfIdentifier(Code.point(), AST.getSourceManager(), - AST.getASTContext().getLangOpts()); + AST.getLangOpts()); auto Result = locateMacroAt(Loc, AST.getPreprocessor()); ASSERT_TRUE(Result); EXPECT_THAT(*Result, MacroName("MACRO")); @@ -548,7 +548,7 @@ TEST(SourceCodeTests, HalfOpenFileRange) { ParsedAST AST = TestTU::withCode(Test.code()).build(); llvm::errs() << Test.code(); const SourceManager &SM = AST.getSourceManager(); - const LangOptions &LangOpts = AST.getASTContext().getLangOpts(); + const LangOptions &LangOpts = AST.getLangOpts(); // Turn a SourceLocation into a pair of positions auto SourceRangeToRange = [&SM](SourceRange SrcRange) { return Range{sourceLocToPosition(SM, SrcRange.getBegin()), @@ -588,8 +588,7 @@ TEST(SourceCodeTests, HalfOpenFileRangePathologicalPreprocessor) { const auto &Body = cast<CompoundStmt>(Func.getBody()); const auto &Loop = cast<WhileStmt>(*Body->child_begin()); llvm::Optional<SourceRange> Range = toHalfOpenFileRange( - AST.getSourceManager(), AST.getASTContext().getLangOpts(), - Loop->getSourceRange()); + AST.getSourceManager(), AST.getLangOpts(), Loop->getSourceRange()); ASSERT_TRUE(Range) << "Failed to get file range"; EXPECT_EQ(AST.getSourceManager().getFileOffset(Range->getBegin()), Test.llvm::Annotations::range().Begin); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits