This revision was automatically updated to reflect the committed changes. Closed by commit rGa533b03028fa: [clangd] Add missing GoToStmt in FindTarget. (authored by hokein).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77715/new/ https://reviews.llvm.org/D77715 Files: clang-tools-extra/clangd/FindTarget.cpp clang-tools-extra/clangd/unittests/FindTargetTests.cpp Index: clang-tools-extra/clangd/unittests/FindTargetTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/FindTargetTests.cpp +++ clang-tools-extra/clangd/unittests/FindTargetTests.cpp @@ -130,6 +130,22 @@ } )cpp"; EXPECT_DECLS("CXXOperatorCallExpr", "void operator()(int n)"); + + Code = R"cpp( + void test() { + goto [[label]]; + label: + return; + } + )cpp"; + EXPECT_DECLS("GotoStmt", "label:"); + Code = R"cpp( + void test() { + [[label]]: + return; + } + )cpp"; + EXPECT_DECLS("LabelStmt", "label:"); } TEST_F(TargetDeclTest, Recovery) { Index: clang-tools-extra/clangd/FindTarget.cpp =================================================================== --- clang-tools-extra/clangd/FindTarget.cpp +++ clang-tools-extra/clangd/FindTarget.cpp @@ -331,6 +331,14 @@ break; } } + void VisitGotoStmt(const GotoStmt *Goto) { + if (auto *LabelDecl = Goto->getLabel()) + Outer.add(LabelDecl, Flags); + } + void VisitLabelStmt(const LabelStmt *Label) { + if (auto *LabelDecl = Label->getDecl()) + Outer.add(LabelDecl, Flags); + } void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *E) { const Type *BaseType = E->getBaseType().getTypePtrOrNull();
Index: clang-tools-extra/clangd/unittests/FindTargetTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/FindTargetTests.cpp +++ clang-tools-extra/clangd/unittests/FindTargetTests.cpp @@ -130,6 +130,22 @@ } )cpp"; EXPECT_DECLS("CXXOperatorCallExpr", "void operator()(int n)"); + + Code = R"cpp( + void test() { + goto [[label]]; + label: + return; + } + )cpp"; + EXPECT_DECLS("GotoStmt", "label:"); + Code = R"cpp( + void test() { + [[label]]: + return; + } + )cpp"; + EXPECT_DECLS("LabelStmt", "label:"); } TEST_F(TargetDeclTest, Recovery) { Index: clang-tools-extra/clangd/FindTarget.cpp =================================================================== --- clang-tools-extra/clangd/FindTarget.cpp +++ clang-tools-extra/clangd/FindTarget.cpp @@ -331,6 +331,14 @@ break; } } + void VisitGotoStmt(const GotoStmt *Goto) { + if (auto *LabelDecl = Goto->getLabel()) + Outer.add(LabelDecl, Flags); + } + void VisitLabelStmt(const LabelStmt *Label) { + if (auto *LabelDecl = Label->getDecl()) + Outer.add(LabelDecl, Flags); + } void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *E) { const Type *BaseType = E->getBaseType().getTypePtrOrNull();
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits