diff options
| author | Sean Callanan <scallanan@apple.com> | 2012-01-05 22:35:40 +0000 |
|---|---|---|
| committer | Sean Callanan <scallanan@apple.com> | 2012-01-05 22:35:40 +0000 |
| commit | 3c88eae154417358457793b185c80b0bde201d5c (patch) | |
| tree | e08da038b55879110dcc31a6d25f27b713081c8c | |
| parent | de30e523b40de486a385935550b43798eb4c77bf (diff) | |
| download | bcm5719-llvm-3c88eae154417358457793b185c80b0bde201d5c.tar.gz bcm5719-llvm-3c88eae154417358457793b185c80b0bde201d5c.zip | |
Fixed a problem in our local Clang's method for
performing Objective-C instance variable lookup.
Previously, it only completed the derived class
that was the beginning of the search. Now, as
it walks up the superclass chain looking for the
ivar, it completes each superclass in turn.
Also added a testcase covering this issue.
llvm-svn: 147621
| -rw-r--r-- | lldb/scripts/clang.complete-type-ivar-lookup.diff | 19 | ||||
| -rw-r--r-- | lldb/test/lang/objc/foundation/TestObjCMethods.py | 4 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lldb/scripts/clang.complete-type-ivar-lookup.diff b/lldb/scripts/clang.complete-type-ivar-lookup.diff new file mode 100644 index 00000000000..81db76942ef --- /dev/null +++ b/lldb/scripts/clang.complete-type-ivar-lookup.diff @@ -0,0 +1,19 @@ +Index: lib/AST/DeclObjC.cpp +=================================================================== +--- lib/AST/DeclObjC.cpp (revision 146622) ++++ lib/AST/DeclObjC.cpp (working copy) +@@ -244,11 +244,11 @@ + + ObjCIvarDecl *ObjCInterfaceDecl::lookupInstanceVariable(IdentifierInfo *ID, + ObjCInterfaceDecl *&clsDeclared) { +- if (ExternallyCompleted) +- LoadExternalDefinition(); +- + ObjCInterfaceDecl* ClassDecl = this; + while (ClassDecl != NULL) { ++ if (ClassDecl->ExternallyCompleted) ++ ClassDecl->LoadExternalDefinition(); ++ + if (ObjCIvarDecl *I = ClassDecl->getIvarDecl(ID)) { + clsDeclared = ClassDecl; + return I; diff --git a/lldb/test/lang/objc/foundation/TestObjCMethods.py b/lldb/test/lang/objc/foundation/TestObjCMethods.py index a5d497c1427..7d5618d146c 100644 --- a/lldb/test/lang/objc/foundation/TestObjCMethods.py +++ b/lldb/test/lang/objc/foundation/TestObjCMethods.py @@ -165,6 +165,10 @@ class FoundationTestCase(TestBase): substrs = ["(MyString) *self", "(NSString *) str", "(NSDate *) date"]) + + # isa should be accessible. + self.expect("expression self->isa", VARIABLES_DISPLAYED_CORRECTLY, + substrs = ["(Class)"]) # This should fail expectedly. self.expect("expression self->non_existent_member", |

