daiyousei-qz updated this revision to Diff 433590.
daiyousei-qz added a comment.
Herald added a subscriber: arphaman.
Herald added a project: clang-tools-extra.
added unit test
moved redundant visit
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126757/new/
https://reviews.llvm.org/D126757
Files:
clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
clang/include/clang/AST/RecursiveASTVisitor.h
Index: clang/include/clang/AST/RecursiveASTVisitor.h
===================================================================
--- clang/include/clang/AST/RecursiveASTVisitor.h
+++ clang/include/clang/AST/RecursiveASTVisitor.h
@@ -2034,12 +2034,13 @@
if (TypeSourceInfo *TSI = D->getTypeAsWritten())
\
TRY_TO(TraverseTypeLoc(TSI->getTypeLoc()));
\
\
- TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
\
if (getDerived().shouldVisitTemplateInstantiations() ||
\
D->getTemplateSpecializationKind() == TSK_ExplicitSpecialization) {
\
/* Traverse base definition for explicit specializations */
\
TRY_TO(Traverse##DECLKIND##Helper(D));
\
} else {
\
+ TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
\
+
\
/* Returning from here skips traversing the
\
declaration context of the *TemplateSpecializationDecl
\
(embedded in the DEF_TRAVERSE_DECL() macro)
\
Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -807,6 +807,19 @@
$Function_deprecated[[Foo]]($Parameter[[x]]);
$Function_deprecated[[Foo]]($Parameter[[x]]);
}
+ )cpp",
+ // Template specialization
+ R"cpp(
+ struct $Class_decl[[Base]]{};
+ template <typename $TemplateParameter_decl[[T]]>
+ struct $Class_decl[[S]] : public $Class[[Base]] {};
+ template <>
+ struct $Class_decl[[S]]<void> : public $Class[[Base]] {};
+
+ template <typename $TemplateParameter_decl[[T]]>
+ $TemplateParameter[[T]] $Variable_decl[[x]] = {};
+ template <>
+ int $Variable_decl[[x]]<int> = (int)sizeof($Class[[Base]]);
)cpp"};
for (const auto &TestCase : TestCases)
// Mask off scope modifiers to keep the tests manageable.
Index: clang/include/clang/AST/RecursiveASTVisitor.h
===================================================================
--- clang/include/clang/AST/RecursiveASTVisitor.h
+++ clang/include/clang/AST/RecursiveASTVisitor.h
@@ -2034,12 +2034,13 @@
if (TypeSourceInfo *TSI = D->getTypeAsWritten()) \
TRY_TO(TraverseTypeLoc(TSI->getTypeLoc())); \
\
- TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc())); \
if (getDerived().shouldVisitTemplateInstantiations() || \
D->getTemplateSpecializationKind() == TSK_ExplicitSpecialization) { \
/* Traverse base definition for explicit specializations */ \
TRY_TO(Traverse##DECLKIND##Helper(D)); \
} else { \
+ TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc())); \
+ \
/* Returning from here skips traversing the \
declaration context of the *TemplateSpecializationDecl \
(embedded in the DEF_TRAVERSE_DECL() macro) \
Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -807,6 +807,19 @@
$Function_deprecated[[Foo]]($Parameter[[x]]);
$Function_deprecated[[Foo]]($Parameter[[x]]);
}
+ )cpp",
+ // Template specialization
+ R"cpp(
+ struct $Class_decl[[Base]]{};
+ template <typename $TemplateParameter_decl[[T]]>
+ struct $Class_decl[[S]] : public $Class[[Base]] {};
+ template <>
+ struct $Class_decl[[S]]<void> : public $Class[[Base]] {};
+
+ template <typename $TemplateParameter_decl[[T]]>
+ $TemplateParameter[[T]] $Variable_decl[[x]] = {};
+ template <>
+ int $Variable_decl[[x]]<int> = (int)sizeof($Class[[Base]]);
)cpp"};
for (const auto &TestCase : TestCases)
// Mask off scope modifiers to keep the tests manageable.
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits