48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
 | |
| __attribute((objc_root_class)) @interface NSObject {
 | |
| 	id isa;
 | |
| }
 | |
| + (id)alloc;
 | |
| - (id)init;
 | |
| - (id)retain;
 | |
| @end
 | |
| 
 | |
| void NSLog(id, ...);
 | |
| 
 | |
| @protocol MyProtocol
 | |
| 
 | |
| -(const char *)hello;
 | |
| 
 | |
| @end
 | |
| 
 | |
| @interface MyClass : NSObject {
 | |
| }
 | |
| 
 | |
| @property (nonatomic, assign) id <MyProtocol> bad_carrier;
 | |
| @property (nonatomic, assign) id good_carrier;
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation MyClass
 | |
| @end
 | |
| 
 | |
| int main()
 | |
| {
 | |
|     @autoreleasepool
 | |
|     {
 | |
|         MyClass *my_class = [MyClass alloc];
 | |
|         NSLog(@"%p\n", my_class.bad_carrier);
 | |
|         NSLog(@"%p\n", my_class.good_carrier);
 | |
|     }
 | |
| }
 | |
| // Verify that the debug type for both variables is 'id'.
 | |
| // CHECK:  ![[IDTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name: "id"
 | |
| //
 | |
| // CHECK:  !DILocalVariable(name: "bad_carrier", arg:
 | |
| // CHECK-NOT:               line:
 | |
| // CHECK-SAME:              type: ![[IDTYPE]]
 | |
| //
 | |
| // CHECK:  !DILocalVariable(name: "good_carrier", arg:
 | |
| // CHECK-NOT:               line:
 | |
| // CHECK-SAME:              type: ![[IDTYPE]]
 |