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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits