[PATCH] D70299: [clangd] Replace getLangOpts().isHeaderFile usage with isHeaderFile helper.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 15 07:34:00 PST 2019
This revision was automatically updated to reflect the committed changes.
hokein marked an inline comment as done.
Closed by commit rGb221c9d09dd1: [clangd] Replace getLangOpts().isHeaderFile usage with isHeaderFile helper. (authored by hokein).
Changed prior to commit:
https://reviews.llvm.org/D70299?vs=229487&id=229551#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D70299/new/
https://reviews.llvm.org/D70299
Files:
clang-tools-extra/clangd/HeaderSourceSwitch.cpp
clang-tools-extra/clangd/index/SymbolCollector.cpp
clang-tools-extra/clangd/refactor/Rename.cpp
clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
Index: clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
+++ clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
@@ -664,6 +664,17 @@
runSymbolCollector("", Header.code(),
/*ExtraArgs=*/{"-xobjective-c++-header"});
EXPECT_THAT(Symbols, UnorderedElementsAre(QName("Foo"), QName("Func")));
+ EXPECT_THAT(Refs,
+ UnorderedElementsAre(Pair(findSymbol(Symbols, "Foo").ID,
+ HaveRanges(Header.ranges("Foo"))),
+ Pair(findSymbol(Symbols, "Func").ID,
+ HaveRanges(Header.ranges("Func")))));
+
+ // Run the .hh file as main file (without "-x c++-header"), we should collect
+ // the refs as well.
+ TestFileName = testPath("foo.hh");
+ runSymbolCollector("", Header.code());
+ EXPECT_THAT(Symbols, UnorderedElementsAre(QName("Foo"), QName("Func")));
EXPECT_THAT(Refs, UnorderedElementsAre(Pair(findSymbol(Symbols, "Foo").ID,
HaveRanges(Header.ranges("Foo"))),
Pair(findSymbol(Symbols, "Func").ID,
Index: clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
+++ clang-tools-extra/clangd/unittests/FindSymbolsTests.cpp
@@ -178,14 +178,11 @@
}
TEST_F(WorkspaceSymbolsTest, AnonymousNamespace) {
- addFile("foo.h", R"cpp(
+ addFile("foo.cpp", R"cpp(
namespace {
void test() {}
}
)cpp");
- addFile("foo.cpp", R"cpp(
- #include "foo.h"
- )cpp");
EXPECT_THAT(getSymbols("test"), ElementsAre(QName("test")));
}
Index: clang-tools-extra/clangd/refactor/Rename.cpp
===================================================================
--- clang-tools-extra/clangd/refactor/Rename.cpp
+++ clang-tools-extra/clangd/refactor/Rename.cpp
@@ -76,7 +76,7 @@
}
auto &ASTCtx = RenameDecl.getASTContext();
const auto &SM = ASTCtx.getSourceManager();
- bool MainFileIsHeader = ASTCtx.getLangOpts().IsHeaderFile;
+ bool MainFileIsHeader = isHeaderFile(MainFile, ASTCtx.getLangOpts());
bool DeclaredInMainFile = isInsideMainFile(RenameDecl.getBeginLoc(), SM);
if (!DeclaredInMainFile)
Index: clang-tools-extra/clangd/index/SymbolCollector.cpp
===================================================================
--- clang-tools-extra/clangd/index/SymbolCollector.cpp
+++ clang-tools-extra/clangd/index/SymbolCollector.cpp
@@ -304,7 +304,8 @@
// it's main-file only.
bool IsMainFileOnly =
SM.isWrittenInMainFile(SM.getExpansionLoc(ND->getBeginLoc())) &&
- !ASTCtx->getLangOpts().IsHeaderFile;
+ !isHeaderFile(SM.getFileEntryForID(SM.getMainFileID())->getName(),
+ ASTCtx->getLangOpts());
// In C, printf is a redecl of an implicit builtin! So check OrigD instead.
if (ASTNode.OrigD->isImplicit() ||
!shouldCollectSymbol(*ND, *ASTCtx, Opts, IsMainFileOnly))
Index: clang-tools-extra/clangd/HeaderSourceSwitch.cpp
===================================================================
--- clang-tools-extra/clangd/HeaderSourceSwitch.cpp
+++ clang-tools-extra/clangd/HeaderSourceSwitch.cpp
@@ -9,6 +9,7 @@
#include "HeaderSourceSwitch.h"
#include "AST.h"
#include "Logger.h"
+#include "SourceCode.h"
#include "index/SymbolCollector.h"
#include "clang/AST/Decl.h"
@@ -96,7 +97,7 @@
//
// 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 = AST.getASTContext().getLangOpts().IsHeaderFile;
+ bool IsHeader = isHeaderFile(OriginalFile, AST.getASTContext().getLangOpts());
Index->lookup(Request, [&](const Symbol &Sym) {
if (IsHeader)
AwardTarget(Sym.Definition.FileURI);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70299.229551.patch
Type: text/x-patch
Size: 3984 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191115/64b2b8aa/attachment-0001.bin>
More information about the cfe-commits
mailing list