diff options
Diffstat (limited to 'lldb')
-rw-r--r-- | lldb/source/Expression/ClangUserExpression.cpp | 10 | ||||
-rw-r--r-- | lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py | 5 | ||||
-rw-r--r-- | lldb/test/lang/objc/objc-static-method/static.m | 5 |
3 files changed, 12 insertions, 8 deletions
diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp index 9bc41889445..71a528280d9 100644 --- a/lldb/source/Expression/ClangUserExpression.cpp +++ b/lldb/source/Expression/ClangUserExpression.cpp @@ -68,9 +68,6 @@ ClangUserExpression::ASTTransformer (clang::ASTConsumer *passthrough) void ClangUserExpression::ScanContext(ExecutionContext &exe_ctx) { - if (!exe_ctx.frame) - return; - VariableList *vars = exe_ctx.frame->GetVariableList(false); if (!vars) @@ -102,6 +99,13 @@ ClangUserExpression::ScanContext(ExecutionContext &exe_ctx) else if (self_var.get()) { m_objectivec = true; + + Type *self_type = self_var->GetType(); + + if (self_type->GetClangForwardType() == self_type->GetClangASTContext().GetBuiltInType_objc_id()) + { + m_objectivec = false; + } } } diff --git a/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py b/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py index 37c5b90924f..7e457f6e9d8 100644 --- a/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py +++ b/lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py @@ -14,7 +14,6 @@ class TestObjCStaticMethod(TestBase): @python_api_test #<rdar://problem/9745789> "expression" can't call functions in class methods - @unittest2.expectedFailure def test_with_dsym_and_python_api(self): """Test calling functions in static methods.""" self.buildDsym() @@ -22,7 +21,6 @@ class TestObjCStaticMethod(TestBase): @python_api_test #<rdar://problem/9745789> "expression" can't call functions in class methods - @unittest2.expectedFailure def test_with_dwarf_and_python_api(self): """Test calling functions in static methods.""" self.buildDwarf() @@ -35,7 +33,6 @@ class TestObjCStaticMethod(TestBase): self.main_source = "static.m" self.break_line = line_number(self.main_source, '// Set breakpoint here.') - @unittest2.expectedFailure #rdar://problem/9745789 "expression" can't call functions in class methods def objc_static_method(self): """Test calling functions in static methods.""" @@ -66,7 +63,7 @@ class TestObjCStaticMethod(TestBase): cmd_value = frame.EvaluateExpression ("(char *) sel_getName (_cmd)") self.assertTrue (cmd_value.IsValid()) sel_name = cmd_value.GetSummary() - self.assertTrue (sel_name == "doSomethingWithString:", "Got the right value for the selector as string.") + self.assertTrue (sel_name == "\"doSomethingWithString:\"", "Got the right value for the selector as string.") if __name__ == '__main__': import atexit diff --git a/lldb/test/lang/objc/objc-static-method/static.m b/lldb/test/lang/objc/objc-static-method/static.m index 7201ce6f802..a069c1502ad 100644 --- a/lldb/test/lang/objc/objc-static-method/static.m +++ b/lldb/test/lang/objc/objc-static-method/static.m @@ -2,14 +2,17 @@ @interface Foo : NSObject +(void) doSomethingWithString: (NSString *) string; - +-(void) doSomethingWithNothing; @end @implementation Foo +(void) doSomethingWithString: (NSString *) string { NSLog (@"String is: %@.", string); // Set breakpoint here. +} +-(void) doSomethingWithNothing +{ } @end |