[PATCH] D66083: [clangd] Remove highlightings coming from non topLevelDecls from included files.
Johan Vikström via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 12 06:00:17 PDT 2019
This revision was automatically updated to reflect the committed changes.
jvikstrom marked 3 inline comments as done.
Closed by commit rL368563: [clangd] Remove highlightings coming from non topLevelDecls from included files. (authored by jvikstrom, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D66083?vs=214608&id=214616#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66083/new/
https://reviews.llvm.org/D66083
Files:
clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
Index: clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
===================================================================
--- clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
@@ -231,6 +231,12 @@
// FIXME: skip tokens inside macros for now.
return;
+ // Non top level decls that are included from a header are not filtered by
+ // topLevelDecls. (example: method declarations being included from another
+ // file for a class from another file)
+ if (!isInsideMainFile(Loc, SM))
+ return;
+
auto R = getTokenRange(SM, Ctx.getLangOpts(), Loc);
if (!R) {
// R should always have a value, if it doesn't something is very wrong.
Index: clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
===================================================================
--- clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
@@ -51,9 +51,15 @@
return ExpectedTokens;
}
-void checkHighlightings(llvm::StringRef Code) {
+void checkHighlightings(llvm::StringRef Code,
+ std::vector<std::pair</*FileName*/ llvm::StringRef,
+ /*FileContent*/ llvm::StringRef>>
+ AdditionalFiles = {}) {
Annotations Test(Code);
- auto AST = TestTU::withCode(Test.code()).build();
+ auto TU = TestTU::withCode(Test.code());
+ for (auto File : AdditionalFiles)
+ TU.AdditionalFiles.insert({File.first, File.second});
+ auto AST = TU.build();
std::vector<HighlightingToken> ActualTokens = getSemanticHighlightings(AST);
EXPECT_THAT(ActualTokens, getExpectedTokens(Test)) << Code;
}
@@ -321,6 +327,17 @@
for (const auto &TestCase : TestCases) {
checkHighlightings(TestCase);
}
+
+ checkHighlightings(R"cpp(
+ class $Class[[A]] {
+ #include "imp.h"
+ };
+ #endif
+ )cpp",
+ {{"imp.h", R"cpp(
+ int someMethod();
+ void otherMethod();
+ )cpp"}});
}
TEST(SemanticHighlighting, GeneratesHighlightsWhenFileChange) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66083.214616.patch
Type: text/x-patch
Size: 2182 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190812/daa58135/attachment.bin>
More information about the cfe-commits
mailing list