summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile10
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py7
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm21
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm7
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile4
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py21
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm12
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile4
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py47
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm28
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py7
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm33
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile4
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm71
14 files changed, 276 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile
new file mode 100644
index 00000000000..bae88debbb1
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile
@@ -0,0 +1,10 @@
+OBJCXX_SOURCES := main.mm myobject.mm
+include Makefile.rules
+CFLAGS_NO_DEBUG =
+ifeq "$(OS)" "Darwin"
+ CFLAGS_NO_DEBUG += -arch $(ARCH)
+endif
+
+# myobject.o needs to be built without debug info
+myobject.o: myobject.mm
+ $(CXX) $(CFLAGS_NO_DEBUG) -c -o $@ $<
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py
new file mode 100644
index 00000000000..19832aefee9
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/TestNameClash.py
@@ -0,0 +1,7 @@
+from lldbsuite.test import decorators
+from lldbsuite.test import lldbinline
+
+lldbinline.MakeInlineTest(
+ __file__, globals(), [
+ decorators.skipIfFreeBSD, decorators.skipIfLinux,
+ decorators.skipIfWindows, decorators.skipIfNetBSD])
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm
new file mode 100644
index 00000000000..b74871f4270
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/main.mm
@@ -0,0 +1,21 @@
+#import <Foundation/Foundation.h>
+
+namespace NS {
+ class MyObject { int i = 42; };
+ NS::MyObject globalObject;
+}
+
+@interface MyObject: NSObject
+@end
+
+int main ()
+{
+ @autoreleasepool
+ {
+ MyObject *o = [MyObject alloc];
+ return 0; //% self.expect("fr var o", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["(MyObject"]);
+ //% self.expect("fr var globalObject", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["42"]);
+ }
+}
+
+
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm
new file mode 100644
index 00000000000..051c4e5eb1d
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/myobject.mm
@@ -0,0 +1,7 @@
+#import <Foundation/Foundation.h>
+
+@interface MyObject : NSObject
+@end
+
+@implementation MyObject
+@end
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile
new file mode 100644
index 00000000000..7cfe4a3f0fd
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile
@@ -0,0 +1,4 @@
+OBJCXX_SOURCES := main.mm
+LD_EXTRAS := -lobjc -framework CoreFoundation
+
+include Makefile.rules
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
new file mode 100644
index 00000000000..6f3275b861c
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
@@ -0,0 +1,21 @@
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+import lldbsuite.test.lldbutil as lldbutil
+
+class TestObjCXXBridgedPO(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @skipUnlessDarwin
+ def test_bridged_type_po(self):
+ self.build()
+ lldbutil.run_to_source_breakpoint(
+ self, 'break here', lldb.SBFileSpec('main.mm'))
+ self.expect('po num',
+ "did not get the Objective-C object description",
+ substrs=['CFNumber', '0x', '42'])
+ pointer_val = str(self.frame().FindVariable('num').GetValue())
+ self.expect('po '+pointer_val,
+ "did not get the Objective-C object description",
+ substrs=['CFNumber', '0x', '42'])
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm
new file mode 100644
index 00000000000..e376456033f
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/main.mm
@@ -0,0 +1,12 @@
+#include <CoreFoundation/CoreFoundation.h>
+
+void stop() {}
+
+int main(int argc, char **argv)
+{
+ int value = 42;
+ CFNumberRef num;
+ num = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &value);
+ stop(); // break here
+ return 0;
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile
new file mode 100644
index 00000000000..3af75c304c3
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile
@@ -0,0 +1,4 @@
+OBJCXX_SOURCES := main.mm
+LD_EXTRAS := -lobjc -framework Foundation
+
+include Makefile.rules
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py
new file mode 100644
index 00000000000..cc6ac20b84b
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py
@@ -0,0 +1,47 @@
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+import lldbsuite.test.lldbutil as lldbutil
+import unittest2
+
+
+class TestObjCXXHideRuntimeSupportValues(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @skipIfFreeBSD
+ @skipIfLinux
+ @skipIfWindows
+ @skipIfNetBSD
+ def test_hide_runtime_support_values(self):
+ self.build()
+ _, process, _, _ = lldbutil.run_to_source_breakpoint(
+ self, 'break here', lldb.SBFileSpec('main.mm'))
+
+ var_opts = lldb.SBVariablesOptions()
+ var_opts.SetIncludeArguments(True)
+ var_opts.SetIncludeLocals(True)
+ var_opts.SetInScopeOnly(True)
+ var_opts.SetIncludeStatics(False)
+ var_opts.SetIncludeRuntimeSupportValues(False)
+ var_opts.SetUseDynamic(lldb.eDynamicCanRunTarget)
+ values = self.frame().GetVariables(var_opts)
+
+ def shows_var(name):
+ for value in values:
+ if value.name == name:
+ return True
+ return False
+ # ObjC method.
+ values = self.frame().GetVariables(var_opts)
+ self.assertFalse(shows_var("this"))
+ self.assertTrue(shows_var("self"))
+ self.assertTrue(shows_var("_cmd"))
+ self.assertTrue(shows_var("c"))
+
+ process.Continue()
+ # C++ method.
+ values = self.frame().GetVariables(var_opts)
+ self.assertTrue(shows_var("this"))
+ self.assertFalse(shows_var("self"))
+ self.assertFalse(shows_var("_cmd"))
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm
new file mode 100644
index 00000000000..c192f386f22
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/main.mm
@@ -0,0 +1,28 @@
+#import <Foundation/Foundation.h>
+
+void baz() {}
+
+struct MyClass {
+ void bar() {
+ baz(); // break here
+ }
+};
+
+@interface MyObject : NSObject {}
+- (void)foo;
+@end
+
+@implementation MyObject
+- (void)foo {
+ MyClass c;
+ c.bar(); // break here
+}
+@end
+
+int main (int argc, char const *argv[]) {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ id obj = [MyObject new];
+ [obj foo];
+ [pool release];
+ return 0;
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py
new file mode 100644
index 00000000000..19832aefee9
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py
@@ -0,0 +1,7 @@
+from lldbsuite.test import decorators
+from lldbsuite.test import lldbinline
+
+lldbinline.MakeInlineTest(
+ __file__, globals(), [
+ decorators.skipIfFreeBSD, decorators.skipIfLinux,
+ decorators.skipIfWindows, decorators.skipIfNetBSD])
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm
new file mode 100644
index 00000000000..36eda1da2ac
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/objcxx-ivar-vector/main.mm
@@ -0,0 +1,33 @@
+#import <Foundation/Foundation.h>
+
+#include <vector>
+
+@interface MyElement : NSObject {
+}
+@end
+
+@interface MyClass : NSObject {
+ std::vector<MyElement *> elements;
+};
+
+-(void)doSomething;
+
+@end
+
+@implementation MyClass
+
+-(void)doSomething
+{
+ NSLog(@"Hello"); //% self.expect("expression -- elements", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["vector", "MyElement"]);
+}
+
+@end
+
+int main ()
+{
+ @autoreleasepool
+ {
+ MyClass *c = [MyClass alloc];
+ [c doSomething];
+ }
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile
new file mode 100644
index 00000000000..3af75c304c3
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile
@@ -0,0 +1,4 @@
+OBJCXX_SOURCES := main.mm
+LD_EXTRAS := -lobjc -framework Foundation
+
+include Makefile.rules
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm
new file mode 100644
index 00000000000..c9a2172c368
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/main.mm
@@ -0,0 +1,71 @@
+#import <Foundation/Foundation.h>
+#include <iostream>
+
+@interface MyString : NSObject {
+ NSString *_string;
+ NSDate *_date;
+}
+- (id)initWithNSString:(NSString *)string;
+
+@property (copy) NSString *string;
+@property (readonly,getter=getTheDate) NSDate *date;
+
+- (NSDate *) getTheDate;
+@end
+
+@implementation MyString
+
+@synthesize string = _string;
+@synthesize date = _date;
+
+- (id)initWithNSString:(NSString *)string
+{
+ if (self = [super init])
+ {
+ _string = [NSString stringWithString:string];
+ _date = [NSDate date];
+ }
+ return self;
+}
+
+- (void) dealloc
+{
+ [_date release];
+ [_string release];
+ [super dealloc];
+}
+
+- (NSDate *) getTheDate
+{
+ return _date;
+}
+
+- (NSString *)description
+{
+ return [_string stringByAppendingFormat:@" with timestamp: %@", _date];
+}
+@end
+
+int main (int argc, char const *argv[])
+{
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+ static NSString *g_global_nsstr = @"Howdy";
+
+ MyString *myStr = [[MyString alloc] initWithNSString: [NSString stringWithFormat:@"string %i", 1]];
+ NSString *str1 = myStr.string;
+ NSString *str2 = [NSString stringWithFormat:@"string %i", 2];
+ NSString *str3 = [NSString stringWithFormat:@"string %i", 3];
+ NSArray *array = [NSArray arrayWithObjects: str1, str2, str3, nil];
+ NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ str1, @"1",
+ str2, @"2",
+ str3, @"3",
+ myStr.date, @"date",
+ nil];
+
+ id str_id = str1;
+ SEL sel = @selector(length);
+ [pool release];
+ std::cout << "Hello, objc++!\n";
+ return 0;
+}