xref: /aosp_15_r20/external/clang/test/CodeGenObjC/debug-info-id-with-protocol.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
2*67e74705SXin Li__attribute((objc_root_class)) @interface NSObject {
3*67e74705SXin Li	id isa;
4*67e74705SXin Li}
5*67e74705SXin Li+ (id)alloc;
6*67e74705SXin Li- (id)init;
7*67e74705SXin Li- (id)retain;
8*67e74705SXin Li@end
9*67e74705SXin Li
10*67e74705SXin Livoid NSLog(id, ...);
11*67e74705SXin Li
12*67e74705SXin Li@protocol MyProtocol
13*67e74705SXin Li
14*67e74705SXin Li-(const char *)hello;
15*67e74705SXin Li
16*67e74705SXin Li@end
17*67e74705SXin Li
18*67e74705SXin Li@interface MyClass : NSObject {
19*67e74705SXin Li}
20*67e74705SXin Li
21*67e74705SXin Li@property (nonatomic, assign) id <MyProtocol> bad_carrier;
22*67e74705SXin Li@property (nonatomic, assign) id good_carrier;
23*67e74705SXin Li
24*67e74705SXin Li@end
25*67e74705SXin Li
26*67e74705SXin Li@implementation MyClass
27*67e74705SXin Li@end
28*67e74705SXin Li
29*67e74705SXin Liint main()
30*67e74705SXin Li{
31*67e74705SXin Li    @autoreleasepool
32*67e74705SXin Li    {
33*67e74705SXin Li        MyClass *my_class = [MyClass alloc];
34*67e74705SXin Li        NSLog(@"%p\n", my_class.bad_carrier);
35*67e74705SXin Li        NSLog(@"%p\n", my_class.good_carrier);
36*67e74705SXin Li    }
37*67e74705SXin Li}
38*67e74705SXin Li// Verify that the debug type for both variables is 'id'.
39*67e74705SXin Li// CHECK:  ![[IDTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name: "id"
40*67e74705SXin Li//
41*67e74705SXin Li// CHECK:  !DILocalVariable(name: "bad_carrier", arg:
42*67e74705SXin Li// CHECK-NOT:               line:
43*67e74705SXin Li// CHECK-SAME:              type: ![[IDTYPE]]
44*67e74705SXin Li//
45*67e74705SXin Li// CHECK:  !DILocalVariable(name: "good_carrier", arg:
46*67e74705SXin Li// CHECK-NOT:               line:
47*67e74705SXin Li// CHECK-SAME:              type: ![[IDTYPE]]
48