summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/source/Expression/ClangUserExpression.cpp10
-rw-r--r--lldb/test/lang/objc/objc-static-method/TestObjCStaticMethod.py5
-rw-r--r--lldb/test/lang/objc/objc-static-method/static.m5
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
OpenPOWER on IntegriCloud