diff --git a/lldb/test/lang/objc/real-definition/Bar.h b/lldb/test/lang/objc/real-definition/Bar.h new file mode 100644 index 000000000000..20a81faa1017 --- /dev/null +++ b/lldb/test/lang/objc/real-definition/Bar.h @@ -0,0 +1,12 @@ +#import + +@class InternalClass; + +@interface Bar : NSObject { + @private + InternalClass *storage; +} + +- (NSString *)description; + +@end \ No newline at end of file diff --git a/lldb/test/lang/objc/real-definition/Bar.m b/lldb/test/lang/objc/real-definition/Bar.m new file mode 100644 index 000000000000..4b8503194c87 --- /dev/null +++ b/lldb/test/lang/objc/real-definition/Bar.m @@ -0,0 +1,43 @@ +#import "Bar.h" + +@interface InternalClass : NSObject { + @public + NSString *foo; + NSString *bar; +} +@end + +@implementation InternalClass +@end + +@interface Bar () +{ + NSString *_hidden_ivar; +} + +@end + +@implementation Bar + +- (id)init +{ + self = [super init]; + if (self) { + _hidden_ivar = [NSString stringWithFormat:@"%p: @Bar", self]; + } + return self; +} + +- (void)dealloc +{ + [_hidden_ivar release]; + [super dealloc]; +} + +- (NSString *)description +{ + return [_hidden_ivar copyWithZone:NULL]; +} + +@end + \ No newline at end of file diff --git a/lldb/test/lang/objc/real-definition/Foo.h b/lldb/test/lang/objc/real-definition/Foo.h new file mode 100644 index 000000000000..14ff9eed50fd --- /dev/null +++ b/lldb/test/lang/objc/real-definition/Foo.h @@ -0,0 +1,11 @@ +#import + +#import "Bar.h" + +@interface Foo : NSObject { + Bar *_bar; +} + +- (NSString *)description; + +@end \ No newline at end of file diff --git a/lldb/test/lang/objc/real-definition/Foo.m b/lldb/test/lang/objc/real-definition/Foo.m new file mode 100644 index 000000000000..0a3ff832ddd1 --- /dev/null +++ b/lldb/test/lang/objc/real-definition/Foo.m @@ -0,0 +1,25 @@ +#import "Foo.h" + +@implementation Foo + +- (id)init +{ + self = [super init]; + if (self) { + _bar = [[Bar alloc] init]; + } + return self; +} + +- (void)dealloc +{ + [_bar release]; + [super dealloc]; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%p: @Foo { _bar = %@ }", self, _bar]; +} + +@end diff --git a/lldb/test/lang/objc/real-definition/Makefile b/lldb/test/lang/objc/real-definition/Makefile new file mode 100644 index 000000000000..61cc3b3b6db8 --- /dev/null +++ b/lldb/test/lang/objc/real-definition/Makefile @@ -0,0 +1,6 @@ +LEVEL = ../../../make + +OBJC_SOURCES := Bar.m Foo.m main.m +LDFLAGS = $(CFLAGS) -lobjc -framework Foundation + +include $(LEVEL)/Makefile.rules diff --git a/lldb/test/lang/objc/real-definition/main.m b/lldb/test/lang/objc/real-definition/main.m new file mode 100644 index 000000000000..c5371cf86f78 --- /dev/null +++ b/lldb/test/lang/objc/real-definition/main.m @@ -0,0 +1,13 @@ +#include +#include +#import +#import "Foo.h" + +int main (int argc, char const *argv[]) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + Foo *foo = [[Foo alloc] init]; + NSLog (@"foo is %@", foo); + [pool release]; + return 0; +}