xref: /llvm-project/lldb/test/API/commands/frame/var/direct-ivar/objc/main.m (revision 6c599b1e9b7e1b57952565468aed2de16af21082)
123ee705aSDave Lee#include <objc/NSObject.h>
223ee705aSDave Lee
323ee705aSDave Lee@interface Classic : NSObject {
423ee705aSDave Lee@public
523ee705aSDave Lee  int _ivar;
623ee705aSDave Lee}
723ee705aSDave Lee@end
823ee705aSDave Lee
923ee705aSDave Lee@implementation Classic
10*6c599b1eSDave Lee- (void)fun {
1123ee705aSDave Lee  // check self
1223ee705aSDave Lee}
13*6c599b1eSDave Lee
14*6c599b1eSDave Lee- (void)run {
15*6c599b1eSDave Lee  __weak Classic *weakSelf = self;
16*6c599b1eSDave Lee  ^{
17*6c599b1eSDave Lee    Classic *self = weakSelf;
18*6c599b1eSDave Lee    // check idiomatic self
19*6c599b1eSDave Lee
20*6c599b1eSDave Lee    // Use `self` to extend its lifetime (for lldb to inspect the variable).
21*6c599b1eSDave Lee    [self copy];
22*6c599b1eSDave Lee  }();
23*6c599b1eSDave Lee}
2423ee705aSDave Lee@end
2523ee705aSDave Lee
2623ee705aSDave Leeint main() {
2723ee705aSDave Lee  Classic *c = [Classic new];
2823ee705aSDave Lee  c->_ivar = 30;
2923ee705aSDave Lee  [c fun];
30*6c599b1eSDave Lee  [c run];
3123ee705aSDave Lee}
32