1#import <Foundation/Foundation.h>
2#include <stdio.h>
3
4@interface MyString : NSObject {
5 NSString *str;
6 NSDate *date;
7 BOOL _is_valid;
8}
9
10- (id)initWithNSString:(NSString *)string;
11- (BOOL)isValid;
12@end
13
14@implementation MyString
15- (id)initWithNSString:(NSString *)string
16{
17 if (self = [super init])
18 {
19 str = [NSString stringWithString:string];
20 date = [NSDate date];
21 }
22 _is_valid = YES;
23 return self;
24}
25
26- (BOOL)isValid
27{
28 return _is_valid;
29}
30
31- (void)dealloc
32{
33 [date release];
34 [str release];
35 [super dealloc];
36}
37
38- (NSString *)description
39{
40 return [str stringByAppendingFormat:@" with timestamp: %@", date];
41}
42@end
43
44void
45Test_MyString (const char *program)
46{
47 NSString *str = [NSString stringWithFormat:@"Hello from '%s'", program];
48 MyString *my = [[MyString alloc] initWithNSString:str];
49 if ([my isValid])
50 printf(format: "my is valid!\n");
51
52 NSLog(@"NSString instance: %@", [str description]); // Set breakpoint here.
53 // Test 'p (int)[my isValid]'.
54 // The expression parser should not crash -- rdar://problem/9691614.
55
56 NSLog(@"MyString instance: %@", [my description]);
57}
58
59int main (int argc, char const *argv[])
60{
61 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
62
63 Test_MyString (program: argv[0]);
64
65 [pool release];
66 return 0;
67}
68

source code of lldb/test/API/lang/objc/radar-9691614/main.m