Added the source file for some ObjC stepping tests.  No test yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121440 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/objc-stepping/stepping-tests.m b/test/objc-stepping/stepping-tests.m
new file mode 100644
index 0000000..0d5e28a
--- /dev/null
+++ b/test/objc-stepping/stepping-tests.m
@@ -0,0 +1,133 @@
+#import <Foundation/Foundation.h>
+#include <stdio.h>
+
+struct return_me
+{
+  int first;
+  int second;
+};
+
+@interface SourceBase: NSObject
+{
+  struct return_me my_return;
+}
+- (SourceBase *) initWithFirst: (int) first andSecond: (int) second;
+- (void) randomMethod;
+- (struct return_me) returnsStruct;
+@end
+
+@implementation SourceBase
+- (void) randomMethod
+{
+    printf ("Called in SourceBase version of randomMethod.\n");
+}
+
+- (struct return_me) returnsStruct
+{
+  return my_return;
+}
+
+- (SourceBase *) initWithFirst: (int) first andSecond: (int) second
+{
+  my_return.first = first;
+  my_return.second = second;
+
+  return self;
+}
+@end
+
+@interface Source : SourceBase
+{
+  int _property;
+}
+- (void) setProperty: (int) newValue;
+- (void) randomMethod;
+- (struct return_me) returnsStruct;
+@end
+
+@implementation Source
+- (void) setProperty: (int) newValue
+{
+  _property = newValue;
+}
+
+- (void) randomMethod
+{
+    [super randomMethod];
+    printf ("Called in Source version of random method.");
+}
+
+- (struct return_me) returnsStruct
+{
+  printf ("Called in Source version of returnsStruct.\n");
+  return [super returnsStruct];
+}
+
+@end
+
+@interface Observer : NSObject
+{
+  Source *_source;
+}
++ (Observer *) observerWithSource: (Source *) source;
+- (Observer *) initWithASource: (Source *) source;
+- (void) observeValueForKeyPath: (NSString *) path 
+		       ofObject: (id) object
+			 change: (NSDictionary *) change
+			context: (void *) context;
+@end
+
+@implementation Observer
+
++ (Observer *) observerWithSource: (Source *) inSource;
+{
+  Observer *retval;
+
+  retval = [[Observer alloc] initWithASource: inSource];
+  return retval;
+}
+
+- (Observer *) initWithASource: (Source *) source
+{
+  [super init];
+  _source = source;
+  [_source addObserver: self 
+	    forKeyPath: @"property" 
+	    options: (NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
+	    context: NULL];
+  return self;
+}
+
+- (void) observeValueForKeyPath: (NSString *) path 
+		       ofObject: (id) object
+			 change: (NSDictionary *) change
+			context: (void *) context
+{
+  printf ("Observer function called.\n");
+  return;
+}
+@end
+
+int main ()
+{
+  Source *mySource;
+  Observer *myObserver;
+  struct return_me ret_val;
+
+  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+
+  mySource = [[Source alloc] init];
+
+  [mySource randomMethod];               // Set first breakpoint here.
+  ret_val = [mySource returnsStruct];    // Set second breakpoint here.
+
+  myObserver = [Observer observerWithSource: mySource];  
+
+  [mySource randomMethod];              // Set third breakpoint here.
+  ret_val = [mySource returnsStruct];   // Set fourth breakpoint here.
+  [mySource setProperty: 5];            // Set fifth breakpoint here.
+
+  [pool release];
+  return 0;
+
+}