This revision was not accepted when it landed; it landed in state "Needs Revision". This revision was automatically updated to reflect the committed changes. Closed by commit rG4c5a4514d145: [clangd] Fix targetDecl() on certain usage of ObjC properties. (authored by sammccall).
Changed prior to commit: https://reviews.llvm.org/D72494?vs=237267&id=237356#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D72494/new/ https://reviews.llvm.org/D72494 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 @@ -503,15 +503,15 @@ EXPECT_DECLS("ObjCPropertyRefExpr", "- (void)setX:(int)x"); Code = R"cpp( - @interface Foo {} - @property int x; + @interface I {} + @property(retain) I* x; + @property(retain) I* y; @end - void test(Foo *f) { - [[f.x]] = 42; + void test(I *f) { + [[f.x]].y = 0; } )cpp"; - EXPECT_DECLS("ObjCPropertyRefExpr", - "@property(atomic, assign, unsafe_unretained, readwrite) int x"); + EXPECT_DECLS("OpaqueValueExpr", "@property(atomic, retain, readwrite) I *x"); Code = R"cpp( @protocol Foo Index: clang-tools-extra/clangd/FindTarget.cpp =================================================================== --- clang-tools-extra/clangd/FindTarget.cpp +++ clang-tools-extra/clangd/FindTarget.cpp @@ -334,6 +334,12 @@ void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE) { Outer.add(OPE->getProtocol(), Flags); } + void VisitOpaqueValueExpr(const OpaqueValueExpr *OVE) { + Outer.add(OVE->getSourceExpr(), Flags); + } + void VisitPseudoObjectExpr(const PseudoObjectExpr *POE) { + Outer.add(POE->getSyntacticForm(), Flags); + } }; Visitor(*this, Flags).Visit(S); }
Index: clang-tools-extra/clangd/unittests/FindTargetTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/FindTargetTests.cpp +++ clang-tools-extra/clangd/unittests/FindTargetTests.cpp @@ -503,15 +503,15 @@ EXPECT_DECLS("ObjCPropertyRefExpr", "- (void)setX:(int)x"); Code = R"cpp( - @interface Foo {} - @property int x; + @interface I {} + @property(retain) I* x; + @property(retain) I* y; @end - void test(Foo *f) { - [[f.x]] = 42; + void test(I *f) { + [[f.x]].y = 0; } )cpp"; - EXPECT_DECLS("ObjCPropertyRefExpr", - "@property(atomic, assign, unsafe_unretained, readwrite) int x"); + EXPECT_DECLS("OpaqueValueExpr", "@property(atomic, retain, readwrite) I *x"); Code = R"cpp( @protocol Foo Index: clang-tools-extra/clangd/FindTarget.cpp =================================================================== --- clang-tools-extra/clangd/FindTarget.cpp +++ clang-tools-extra/clangd/FindTarget.cpp @@ -334,6 +334,12 @@ void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE) { Outer.add(OPE->getProtocol(), Flags); } + void VisitOpaqueValueExpr(const OpaqueValueExpr *OVE) { + Outer.add(OVE->getSourceExpr(), Flags); + } + void VisitPseudoObjectExpr(const PseudoObjectExpr *POE) { + Outer.add(POE->getSyntacticForm(), Flags); + } }; Visitor(*this, Flags).Visit(S); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits