Re: r293134 - [index] When indexing an ObjC method declaration use its base name for the location.

2017-01-27 Thread Argyrios Kyrtzidis via cfe-commits
Thanks!

> On Jan 27, 2017, at 9:07 AM, Hans Wennborg  wrote:
> 
> Merged in r293303.
> 
> Thanks,
> Hans
> 
> On Fri, Jan 27, 2017 at 8:19 AM, Argyrios Kyrtzidis via cfe-commits
>  wrote:
>> *bump*
>> 
>>> On Jan 25, 2017, at 6:36 PM, Argyrios Kyrtzidis  wrote:
>>> 
>>> Hi Hans,
>>> 
>>> Could this go into the stable branch ?
>>> 
 On Jan 25, 2017, at 6:11 PM, Argyrios Kyrtzidis via cfe-commits 
  wrote:
 
 Author: akirtzidis
 Date: Wed Jan 25 20:11:50 2017
 New Revision: 293134
 
 URL: http://llvm.org/viewvc/llvm-project?rev=293134=rev
 Log:
 [index] When indexing an ObjC method declaration use its base name for the 
 location.
 
 Instead of using the location of the beginning '-'/'+'.
 This is consistent with location used for function decls and ObjC method 
 calls where we use the base name as the location as well.
 
 Modified:
  cfe/trunk/lib/Index/IndexDecl.cpp
  cfe/trunk/test/Index/Core/index-source.m
  cfe/trunk/test/Index/Core/index-subkinds.m
  cfe/trunk/test/Index/index-decls.m
  cfe/trunk/test/Index/index-module.m
  cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp
  cfe/trunk/tools/libclang/CXIndexDataConsumer.h
 
 Modified: cfe/trunk/lib/Index/IndexDecl.cpp
 URL: 
 http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Index/IndexDecl.cpp?rev=293134=293133=293134=diff
 ==
 --- cfe/trunk/lib/Index/IndexDecl.cpp (original)
 +++ cfe/trunk/lib/Index/IndexDecl.cpp Wed Jan 25 20:11:50 2017
 @@ -92,7 +92,13 @@ public:
 Relations.emplace_back((unsigned)SymbolRole::RelationAccessorOf,
AssociatedProp);
 
 -if (!IndexCtx.handleDecl(D, (unsigned)SymbolRole::Dynamic, Relations))
 +// getLocation() returns beginning token of a method declaration, but 
 for
 +// indexing purposes we want to point to the base name.
 +SourceLocation MethodLoc = D->getSelectorStartLoc();
 +if (MethodLoc.isInvalid())
 +  MethodLoc = D->getLocation();
 +
 +if (!IndexCtx.handleDecl(D, MethodLoc, (unsigned)SymbolRole::Dynamic, 
 Relations))
 return false;
   IndexCtx.indexTypeSourceInfo(D->getReturnTypeSourceInfo(), D);
   bool hasIBActionAndFirst = D->hasAttr();
 
 Modified: cfe/trunk/test/Index/Core/index-source.m
 URL: 
 http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-source.m?rev=293134=293133=293134=diff
 ==
 --- cfe/trunk/test/Index/Core/index-source.m (original)
 +++ cfe/trunk/test/Index/Core/index-source.m Wed Jan 25 20:11:50 2017
 @@ -3,10 +3,10 @@
 @interface Base
 // CHECK: [[@LINE-1]]:12 | class/ObjC | Base | c:objc(cs)Base | 
 _OBJC_CLASS_$_Base | Decl | rel: 0
 -(void)meth;
 -// CHECK: [[@LINE-1]]:1 | instance-method/ObjC | meth | 
 c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
 +// CHECK: [[@LINE-1]]:8 | instance-method/ObjC | meth | 
 c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
 // CHECK-NEXT: RelChild | Base | c:objc(cs)Base
 +(Base*)class_meth;
 -// CHECK: [[@LINE-1]]:1 | class-method/ObjC | class_meth | 
 c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | 
 rel: 1
 +// CHECK: [[@LINE-1]]:9 | class-method/ObjC | class_meth | 
 c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | 
 rel: 1
 // CHECK: [[@LINE-2]]:3 | class/ObjC | Base | c:objc(cs)Base | 
 _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1
 // CHECK-NEXT: RelCont | class_meth | c:objc(cs)Base(cm)class_meth
 
 @@ -92,7 +92,7 @@ extern int setjmp(jmp_buf);
 
 @class I1;
 @interface I1
 -// CHECK: [[@LINE+1]]:1 | instance-method/ObjC | meth | 
 c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
 +// CHECK: [[@LINE+1]]:8 | instance-method/ObjC | meth | 
 c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
 -(void)meth;
 @end
 
 @@ -117,7 +117,7 @@ extern int setjmp(jmp_buf);
 // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
 @synthesize prop = _prop;
 
 -// CHECK: [[@LINE+5]]:1 | instance-method(IB)/ObjC | doAction:foo: | 
 c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | 
 rel: 1
 +// CHECK: [[@LINE+5]]:12 | instance-method(IB)/ObjC | doAction:foo: | 
 c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | 
 rel: 1
 // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
 // CHECK: [[@LINE+3]]:22 | class/ObjC | I1 | c:objc(cs)I1 | 
 _OBJC_CLASS_$_I1 | Ref,RelCont,RelIBType | rel: 1
 // CHECK-NEXT: RelCont,RelIBType | 

Re: r293134 - [index] When indexing an ObjC method declaration use its base name for the location.

2017-01-27 Thread Hans Wennborg via cfe-commits
Merged in r293303.

Thanks,
Hans

On Fri, Jan 27, 2017 at 8:19 AM, Argyrios Kyrtzidis via cfe-commits
 wrote:
> *bump*
>
>> On Jan 25, 2017, at 6:36 PM, Argyrios Kyrtzidis  wrote:
>>
>> Hi Hans,
>>
>> Could this go into the stable branch ?
>>
>>> On Jan 25, 2017, at 6:11 PM, Argyrios Kyrtzidis via cfe-commits 
>>>  wrote:
>>>
>>> Author: akirtzidis
>>> Date: Wed Jan 25 20:11:50 2017
>>> New Revision: 293134
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=293134=rev
>>> Log:
>>> [index] When indexing an ObjC method declaration use its base name for the 
>>> location.
>>>
>>> Instead of using the location of the beginning '-'/'+'.
>>> This is consistent with location used for function decls and ObjC method 
>>> calls where we use the base name as the location as well.
>>>
>>> Modified:
>>>   cfe/trunk/lib/Index/IndexDecl.cpp
>>>   cfe/trunk/test/Index/Core/index-source.m
>>>   cfe/trunk/test/Index/Core/index-subkinds.m
>>>   cfe/trunk/test/Index/index-decls.m
>>>   cfe/trunk/test/Index/index-module.m
>>>   cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp
>>>   cfe/trunk/tools/libclang/CXIndexDataConsumer.h
>>>
>>> Modified: cfe/trunk/lib/Index/IndexDecl.cpp
>>> URL: 
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Index/IndexDecl.cpp?rev=293134=293133=293134=diff
>>> ==
>>> --- cfe/trunk/lib/Index/IndexDecl.cpp (original)
>>> +++ cfe/trunk/lib/Index/IndexDecl.cpp Wed Jan 25 20:11:50 2017
>>> @@ -92,7 +92,13 @@ public:
>>>  Relations.emplace_back((unsigned)SymbolRole::RelationAccessorOf,
>>> AssociatedProp);
>>>
>>> -if (!IndexCtx.handleDecl(D, (unsigned)SymbolRole::Dynamic, Relations))
>>> +// getLocation() returns beginning token of a method declaration, but 
>>> for
>>> +// indexing purposes we want to point to the base name.
>>> +SourceLocation MethodLoc = D->getSelectorStartLoc();
>>> +if (MethodLoc.isInvalid())
>>> +  MethodLoc = D->getLocation();
>>> +
>>> +if (!IndexCtx.handleDecl(D, MethodLoc, (unsigned)SymbolRole::Dynamic, 
>>> Relations))
>>>  return false;
>>>IndexCtx.indexTypeSourceInfo(D->getReturnTypeSourceInfo(), D);
>>>bool hasIBActionAndFirst = D->hasAttr();
>>>
>>> Modified: cfe/trunk/test/Index/Core/index-source.m
>>> URL: 
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-source.m?rev=293134=293133=293134=diff
>>> ==
>>> --- cfe/trunk/test/Index/Core/index-source.m (original)
>>> +++ cfe/trunk/test/Index/Core/index-source.m Wed Jan 25 20:11:50 2017
>>> @@ -3,10 +3,10 @@
>>> @interface Base
>>> // CHECK: [[@LINE-1]]:12 | class/ObjC | Base | c:objc(cs)Base | 
>>> _OBJC_CLASS_$_Base | Decl | rel: 0
>>> -(void)meth;
>>> -// CHECK: [[@LINE-1]]:1 | instance-method/ObjC | meth | 
>>> c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
>>> +// CHECK: [[@LINE-1]]:8 | instance-method/ObjC | meth | 
>>> c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
>>> // CHECK-NEXT: RelChild | Base | c:objc(cs)Base
>>> +(Base*)class_meth;
>>> -// CHECK: [[@LINE-1]]:1 | class-method/ObjC | class_meth | 
>>> c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | 
>>> rel: 1
>>> +// CHECK: [[@LINE-1]]:9 | class-method/ObjC | class_meth | 
>>> c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | 
>>> rel: 1
>>> // CHECK: [[@LINE-2]]:3 | class/ObjC | Base | c:objc(cs)Base | 
>>> _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1
>>> // CHECK-NEXT: RelCont | class_meth | c:objc(cs)Base(cm)class_meth
>>>
>>> @@ -92,7 +92,7 @@ extern int setjmp(jmp_buf);
>>>
>>> @class I1;
>>> @interface I1
>>> -// CHECK: [[@LINE+1]]:1 | instance-method/ObjC | meth | 
>>> c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
>>> +// CHECK: [[@LINE+1]]:8 | instance-method/ObjC | meth | 
>>> c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
>>> -(void)meth;
>>> @end
>>>
>>> @@ -117,7 +117,7 @@ extern int setjmp(jmp_buf);
>>> // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
>>> @synthesize prop = _prop;
>>>
>>> -// CHECK: [[@LINE+5]]:1 | instance-method(IB)/ObjC | doAction:foo: | 
>>> c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | 
>>> rel: 1
>>> +// CHECK: [[@LINE+5]]:12 | instance-method(IB)/ObjC | doAction:foo: | 
>>> c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | 
>>> rel: 1
>>> // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
>>> // CHECK: [[@LINE+3]]:22 | class/ObjC | I1 | c:objc(cs)I1 | 
>>> _OBJC_CLASS_$_I1 | Ref,RelCont,RelIBType | rel: 1
>>> // CHECK-NEXT: RelCont,RelIBType | doAction:foo: | 
>>> c:objc(cs)I2(im)doAction:foo:
>>> @@ -127,11 +127,11 @@ extern int setjmp(jmp_buf);
>>>
>>> @interface I3
>>> @property (readwrite) id prop;
>>> -// CHECK: [[@LINE+3]]:1 | 

Re: r293134 - [index] When indexing an ObjC method declaration use its base name for the location.

2017-01-27 Thread Argyrios Kyrtzidis via cfe-commits
*bump*

> On Jan 25, 2017, at 6:36 PM, Argyrios Kyrtzidis  wrote:
> 
> Hi Hans,
> 
> Could this go into the stable branch ?
> 
>> On Jan 25, 2017, at 6:11 PM, Argyrios Kyrtzidis via cfe-commits 
>>  wrote:
>> 
>> Author: akirtzidis
>> Date: Wed Jan 25 20:11:50 2017
>> New Revision: 293134
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=293134=rev
>> Log:
>> [index] When indexing an ObjC method declaration use its base name for the 
>> location.
>> 
>> Instead of using the location of the beginning '-'/'+'.
>> This is consistent with location used for function decls and ObjC method 
>> calls where we use the base name as the location as well.
>> 
>> Modified:
>>   cfe/trunk/lib/Index/IndexDecl.cpp
>>   cfe/trunk/test/Index/Core/index-source.m
>>   cfe/trunk/test/Index/Core/index-subkinds.m
>>   cfe/trunk/test/Index/index-decls.m
>>   cfe/trunk/test/Index/index-module.m
>>   cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp
>>   cfe/trunk/tools/libclang/CXIndexDataConsumer.h
>> 
>> Modified: cfe/trunk/lib/Index/IndexDecl.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Index/IndexDecl.cpp?rev=293134=293133=293134=diff
>> ==
>> --- cfe/trunk/lib/Index/IndexDecl.cpp (original)
>> +++ cfe/trunk/lib/Index/IndexDecl.cpp Wed Jan 25 20:11:50 2017
>> @@ -92,7 +92,13 @@ public:
>>  Relations.emplace_back((unsigned)SymbolRole::RelationAccessorOf,
>> AssociatedProp);
>> 
>> -if (!IndexCtx.handleDecl(D, (unsigned)SymbolRole::Dynamic, Relations))
>> +// getLocation() returns beginning token of a method declaration, but 
>> for
>> +// indexing purposes we want to point to the base name.
>> +SourceLocation MethodLoc = D->getSelectorStartLoc();
>> +if (MethodLoc.isInvalid())
>> +  MethodLoc = D->getLocation();
>> +
>> +if (!IndexCtx.handleDecl(D, MethodLoc, (unsigned)SymbolRole::Dynamic, 
>> Relations))
>>  return false;
>>IndexCtx.indexTypeSourceInfo(D->getReturnTypeSourceInfo(), D);
>>bool hasIBActionAndFirst = D->hasAttr();
>> 
>> Modified: cfe/trunk/test/Index/Core/index-source.m
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-source.m?rev=293134=293133=293134=diff
>> ==
>> --- cfe/trunk/test/Index/Core/index-source.m (original)
>> +++ cfe/trunk/test/Index/Core/index-source.m Wed Jan 25 20:11:50 2017
>> @@ -3,10 +3,10 @@
>> @interface Base
>> // CHECK: [[@LINE-1]]:12 | class/ObjC | Base | c:objc(cs)Base | 
>> _OBJC_CLASS_$_Base | Decl | rel: 0
>> -(void)meth;
>> -// CHECK: [[@LINE-1]]:1 | instance-method/ObjC | meth | 
>> c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
>> +// CHECK: [[@LINE-1]]:8 | instance-method/ObjC | meth | 
>> c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
>> // CHECK-NEXT: RelChild | Base | c:objc(cs)Base
>> +(Base*)class_meth;
>> -// CHECK: [[@LINE-1]]:1 | class-method/ObjC | class_meth | 
>> c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | rel: 
>> 1
>> +// CHECK: [[@LINE-1]]:9 | class-method/ObjC | class_meth | 
>> c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | rel: 
>> 1
>> // CHECK: [[@LINE-2]]:3 | class/ObjC | Base | c:objc(cs)Base | 
>> _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1
>> // CHECK-NEXT: RelCont | class_meth | c:objc(cs)Base(cm)class_meth
>> 
>> @@ -92,7 +92,7 @@ extern int setjmp(jmp_buf);
>> 
>> @class I1;
>> @interface I1
>> -// CHECK: [[@LINE+1]]:1 | instance-method/ObjC | meth | 
>> c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
>> +// CHECK: [[@LINE+1]]:8 | instance-method/ObjC | meth | 
>> c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
>> -(void)meth;
>> @end
>> 
>> @@ -117,7 +117,7 @@ extern int setjmp(jmp_buf);
>> // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
>> @synthesize prop = _prop;
>> 
>> -// CHECK: [[@LINE+5]]:1 | instance-method(IB)/ObjC | doAction:foo: | 
>> c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | 
>> rel: 1
>> +// CHECK: [[@LINE+5]]:12 | instance-method(IB)/ObjC | doAction:foo: | 
>> c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | 
>> rel: 1
>> // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
>> // CHECK: [[@LINE+3]]:22 | class/ObjC | I1 | c:objc(cs)I1 | _OBJC_CLASS_$_I1 
>> | Ref,RelCont,RelIBType | rel: 1
>> // CHECK-NEXT: RelCont,RelIBType | doAction:foo: | 
>> c:objc(cs)I2(im)doAction:foo:
>> @@ -127,11 +127,11 @@ extern int setjmp(jmp_buf);
>> 
>> @interface I3
>> @property (readwrite) id prop;
>> -// CHECK: [[@LINE+3]]:1 | instance-method/acc-get/ObjC | prop | 
>> c:objc(cs)I3(im)prop | -[I3 prop] | Decl,Dyn,RelChild,RelAcc | rel: 2
>> +// CHECK: [[@LINE+3]]:6 | instance-method/acc-get/ObjC | prop | 
>> c:objc(cs)I3(im)prop | -[I3 prop] | Decl,Dyn,RelChild,RelAcc | rel: 2

Re: r293134 - [index] When indexing an ObjC method declaration use its base name for the location.

2017-01-25 Thread Argyrios Kyrtzidis via cfe-commits
Hi Hans,

Could this go into the stable branch ?

> On Jan 25, 2017, at 6:11 PM, Argyrios Kyrtzidis via cfe-commits 
>  wrote:
> 
> Author: akirtzidis
> Date: Wed Jan 25 20:11:50 2017
> New Revision: 293134
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=293134=rev
> Log:
> [index] When indexing an ObjC method declaration use its base name for the 
> location.
> 
> Instead of using the location of the beginning '-'/'+'.
> This is consistent with location used for function decls and ObjC method 
> calls where we use the base name as the location as well.
> 
> Modified:
>cfe/trunk/lib/Index/IndexDecl.cpp
>cfe/trunk/test/Index/Core/index-source.m
>cfe/trunk/test/Index/Core/index-subkinds.m
>cfe/trunk/test/Index/index-decls.m
>cfe/trunk/test/Index/index-module.m
>cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp
>cfe/trunk/tools/libclang/CXIndexDataConsumer.h
> 
> Modified: cfe/trunk/lib/Index/IndexDecl.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Index/IndexDecl.cpp?rev=293134=293133=293134=diff
> ==
> --- cfe/trunk/lib/Index/IndexDecl.cpp (original)
> +++ cfe/trunk/lib/Index/IndexDecl.cpp Wed Jan 25 20:11:50 2017
> @@ -92,7 +92,13 @@ public:
>   Relations.emplace_back((unsigned)SymbolRole::RelationAccessorOf,
>  AssociatedProp);
> 
> -if (!IndexCtx.handleDecl(D, (unsigned)SymbolRole::Dynamic, Relations))
> +// getLocation() returns beginning token of a method declaration, but for
> +// indexing purposes we want to point to the base name.
> +SourceLocation MethodLoc = D->getSelectorStartLoc();
> +if (MethodLoc.isInvalid())
> +  MethodLoc = D->getLocation();
> +
> +if (!IndexCtx.handleDecl(D, MethodLoc, (unsigned)SymbolRole::Dynamic, 
> Relations))
>   return false;
> IndexCtx.indexTypeSourceInfo(D->getReturnTypeSourceInfo(), D);
> bool hasIBActionAndFirst = D->hasAttr();
> 
> Modified: cfe/trunk/test/Index/Core/index-source.m
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-source.m?rev=293134=293133=293134=diff
> ==
> --- cfe/trunk/test/Index/Core/index-source.m (original)
> +++ cfe/trunk/test/Index/Core/index-source.m Wed Jan 25 20:11:50 2017
> @@ -3,10 +3,10 @@
> @interface Base
> // CHECK: [[@LINE-1]]:12 | class/ObjC | Base | c:objc(cs)Base | 
> _OBJC_CLASS_$_Base | Decl | rel: 0
> -(void)meth;
> -// CHECK: [[@LINE-1]]:1 | instance-method/ObjC | meth | 
> c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
> +// CHECK: [[@LINE-1]]:8 | instance-method/ObjC | meth | 
> c:objc(cs)Base(im)meth | -[Base meth] | Decl,Dyn,RelChild | rel: 1
> // CHECK-NEXT: RelChild | Base | c:objc(cs)Base
> +(Base*)class_meth;
> -// CHECK: [[@LINE-1]]:1 | class-method/ObjC | class_meth | 
> c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | rel: 1
> +// CHECK: [[@LINE-1]]:9 | class-method/ObjC | class_meth | 
> c:objc(cs)Base(cm)class_meth | +[Base class_meth] | Decl,Dyn,RelChild | rel: 1
> // CHECK: [[@LINE-2]]:3 | class/ObjC | Base | c:objc(cs)Base | 
> _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1
> // CHECK-NEXT: RelCont | class_meth | c:objc(cs)Base(cm)class_meth
> 
> @@ -92,7 +92,7 @@ extern int setjmp(jmp_buf);
> 
> @class I1;
> @interface I1
> -// CHECK: [[@LINE+1]]:1 | instance-method/ObjC | meth | c:objc(cs)I1(im)meth 
> | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
> +// CHECK: [[@LINE+1]]:8 | instance-method/ObjC | meth | c:objc(cs)I1(im)meth 
> | -[I1 meth] | Decl,Dyn,RelChild | rel: 1
> -(void)meth;
> @end
> 
> @@ -117,7 +117,7 @@ extern int setjmp(jmp_buf);
> // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
> @synthesize prop = _prop;
> 
> -// CHECK: [[@LINE+5]]:1 | instance-method(IB)/ObjC | doAction:foo: | 
> c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | rel: 
> 1
> +// CHECK: [[@LINE+5]]:12 | instance-method(IB)/ObjC | doAction:foo: | 
> c:objc(cs)I2(im)doAction:foo: | -[I2 doAction:foo:] | Def,Dyn,RelChild | rel: 
> 1
> // CHECK-NEXT: RelChild | I2 | c:objc(cs)I2
> // CHECK: [[@LINE+3]]:22 | class/ObjC | I1 | c:objc(cs)I1 | _OBJC_CLASS_$_I1 
> | Ref,RelCont,RelIBType | rel: 1
> // CHECK-NEXT: RelCont,RelIBType | doAction:foo: | 
> c:objc(cs)I2(im)doAction:foo:
> @@ -127,11 +127,11 @@ extern int setjmp(jmp_buf);
> 
> @interface I3
> @property (readwrite) id prop;
> -// CHECK: [[@LINE+3]]:1 | instance-method/acc-get/ObjC | prop | 
> c:objc(cs)I3(im)prop | -[I3 prop] | Decl,Dyn,RelChild,RelAcc | rel: 2
> +// CHECK: [[@LINE+3]]:6 | instance-method/acc-get/ObjC | prop | 
> c:objc(cs)I3(im)prop | -[I3 prop] | Decl,Dyn,RelChild,RelAcc | rel: 2
> // CHECK-NEXT: RelChild | I3 | c:objc(cs)I3
> // CHECK-NEXT: RelAcc | prop | c:objc(cs)I3(py)prop
> -(id)prop;
> -// CHECK: [[@LINE+3]]:1 | instance-method/acc-set/ObjC | setProp: | 
>