Thanks! > On Jan 27, 2017, at 9:07 AM, Hans Wennborg <h...@chromium.org> wrote: > > Merged in r293303. > > Thanks, > Hans > > On Fri, Jan 27, 2017 at 8:19 AM, Argyrios Kyrtzidis via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> *bump* >> >>> On Jan 25, 2017, at 6:36 PM, Argyrios Kyrtzidis <akyr...@gmail.com> wrote: >>> >>> Hi Hans, >>> >>> Could this go into the stable branch ? >>> >>>> On Jan 25, 2017, at 6:11 PM, Argyrios Kyrtzidis via cfe-commits >>>> <cfe-commits@lists.llvm.org> wrote: >>>> >>>> Author: akirtzidis >>>> Date: Wed Jan 25 20:11:50 2017 >>>> New Revision: 293134 >>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=293134&view=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&r1=293133&r2=293134&view=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<IBActionAttr>(); >>>> >>>> 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&r1=293133&r2=293134&view=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: | >>>> c:objc(cs)I3(im)setProp: | -[I3 setProp:] | Decl,Dyn,RelChild,RelAcc | >>>> rel: 2 >>>> +// CHECK: [[@LINE+3]]:8 | instance-method/acc-set/ObjC | setProp: | >>>> c:objc(cs)I3(im)setProp: | -[I3 setProp:] | Decl,Dyn,RelChild,RelAcc | >>>> rel: 2 >>>> // CHECK-NEXT: RelChild | I3 | c:objc(cs)I3 >>>> // CHECK-NEXT: RelAcc | prop | c:objc(cs)I3(py)prop >>>> -(void)setProp:(id)p; >>>> >>>> Modified: cfe/trunk/test/Index/Core/index-subkinds.m >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-subkinds.m?rev=293134&r1=293133&r2=293134&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/test/Index/Core/index-subkinds.m (original) >>>> +++ cfe/trunk/test/Index/Core/index-subkinds.m Wed Jan 25 20:11:50 2017 >>>> @@ -9,11 +9,11 @@ >>>> @end >>>> // CHECK: [[@LINE+1]]:17 | class(test)/ObjC | MyTestCase | >>>> c:objc(cs)MyTestCase | <no-cgname> | Def | rel: 0 >>>> @implementation MyTestCase >>>> -// CHECK: [[@LINE+1]]:1 | instance-method(test)/ObjC | testMe | >>>> c:objc(cs)MyTestCase(im)testMe | -[MyTestCase testMe] | Def,Dyn,RelChild | >>>> rel: 1 >>>> +// CHECK: [[@LINE+1]]:8 | instance-method(test)/ObjC | testMe | >>>> c:objc(cs)MyTestCase(im)testMe | -[MyTestCase testMe] | Def,Dyn,RelChild | >>>> rel: 1 >>>> -(void)testMe {} >>>> -// CHECK: [[@LINE+1]]:1 | instance-method/ObjC | testResult | >>>> c:objc(cs)MyTestCase(im)testResult | -[MyTestCase testResult] | >>>> Def,Dyn,RelChild | rel: 1 >>>> +// CHECK: [[@LINE+1]]:6 | instance-method/ObjC | testResult | >>>> c:objc(cs)MyTestCase(im)testResult | -[MyTestCase testResult] | >>>> Def,Dyn,RelChild | rel: 1 >>>> -(id)testResult { return 0; } >>>> -// CHECK: [[@LINE+1]]:1 | instance-method/ObjC | testWithInt: | >>>> c:objc(cs)MyTestCase(im)testWithInt: | -[MyTestCase testWithInt:] | >>>> Def,Dyn,RelChild | rel: 1 >>>> +// CHECK: [[@LINE+1]]:8 | instance-method/ObjC | testWithInt: | >>>> c:objc(cs)MyTestCase(im)testWithInt: | -[MyTestCase testWithInt:] | >>>> Def,Dyn,RelChild | rel: 1 >>>> -(void)testWithInt:(int)i {} >>>> @end >>>> >>>> @@ -22,7 +22,7 @@ >>>> @end >>>> // CHECK: [[@LINE+1]]:17 | class(test)/ObjC | SubTestCase | >>>> c:objc(cs)SubTestCase | <no-cgname> | Def | rel: 0 >>>> @implementation SubTestCase >>>> -// CHECK: [[@LINE+1]]:1 | instance-method(test)/ObjC | testIt2 | >>>> c:objc(cs)SubTestCase(im)testIt2 | -[SubTestCase testIt2] | >>>> Def,Dyn,RelChild | rel: 1 >>>> +// CHECK: [[@LINE+1]]:8 | instance-method(test)/ObjC | testIt2 | >>>> c:objc(cs)SubTestCase(im)testIt2 | -[SubTestCase testIt2] | >>>> Def,Dyn,RelChild | rel: 1 >>>> -(void)testIt2 {} >>>> @end >>>> >>>> @@ -34,7 +34,7 @@ >>>> // CHECK: [[@LINE+2]]:17 | class(test)/ObjC | MyTestCase | >>>> c:objc(cs)MyTestCase | _OBJC_CLASS_$_MyTestCase | Ref,RelCont | rel: 1 >>>> // CHECK: [[@LINE+1]]:28 | extension/ObjC | MyTestCase | >>>> c:objc(cy)MyTestCase@cat | <no-cgname> | Def | rel: 0 >>>> @implementation MyTestCase(cat) >>>> -// CHECK: [[@LINE+1]]:1 | instance-method(test)/ObjC | testInCat | >>>> c:objc(cs)MyTestCase(im)testInCat | -[MyTestCase(cat) testInCat] | >>>> Def,Dyn,RelChild | rel: 1 >>>> +// CHECK: [[@LINE+1]]:9 | instance-method(test)/ObjC | testInCat | >>>> c:objc(cs)MyTestCase(im)testInCat | -[MyTestCase(cat) testInCat] | >>>> Def,Dyn,RelChild | rel: 1 >>>> - (void)testInCat {} >>>> @end >>>> >>>> @@ -47,7 +47,7 @@ >>>> @property (readonly) IBOutlet id prop; >>>> // CHECK: [[@LINE+1]]:54 | instance-property(IB,IBColl)/ObjC | propColl | >>>> c:objc(cs)IBCls(py)propColl | <no-cgname> | Decl,RelChild | rel: 1 >>>> @property (readonly) IBOutletCollection(NSButton) id propColl; >>>> -// CHECK: [[@LINE+1]]:1 | instance-method(IB)/ObjC | doIt | >>>> c:objc(cs)IBCls(im)doIt | -[IBCls doIt] | Decl,Dyn,RelChild | rel: 1 >>>> +// CHECK: [[@LINE+1]]:12 | instance-method(IB)/ObjC | doIt | >>>> c:objc(cs)IBCls(im)doIt | -[IBCls doIt] | Decl,Dyn,RelChild | rel: 1 >>>> -(IBAction)doIt; >>>> @end >>>> >>>> >>>> Modified: cfe/trunk/test/Index/index-decls.m >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/index-decls.m?rev=293134&r1=293133&r2=293134&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/test/Index/index-decls.m (original) >>>> +++ cfe/trunk/test/Index/index-decls.m Wed Jan 25 20:11:50 2017 >>>> @@ -58,7 +58,7 @@ int test1() { >>>> // RUN: c-index-test -index-file %s -target x86_64-apple-macosx10.7 > %t >>>> // RUN: FileCheck %s -input-file=%t >>>> // CHECK: [indexDeclaration]: kind: objc-class | name: I | {{.*}} | loc: >>>> 1:12 >>>> -// CHECK: [indexDeclaration]: kind: objc-instance-method | name: prop | >>>> {{.*}} | loc: 3:2 >>>> +// CHECK: [indexDeclaration]: kind: objc-instance-method | name: prop | >>>> {{.*}} | loc: 3:7 >>>> // CHECK: [indexDeclaration]: kind: objc-property | name: prop | {{.*}} | >>>> loc: 2:25 >>>> // CHECK: [indexDeclaration]: kind: objc-category | name: | {{.*}} | loc: >>>> 6:12 >>>> // CHECK: [indexDeclaration]: kind: objc-instance-method | name: setProp: >>>> | {{.*}} | loc: 7:33 >>>> @@ -82,5 +82,5 @@ int test1() { >>>> // CHECK-NOT: [indexDeclaration]: kind: objc-instance-method {{.*}} loc: >>>> 37: >>>> // CHECK-NOT: [indexDeclaration]: kind: objc-instance-method {{.*}} loc: >>>> 43: >>>> >>>> -// CHECK: [indexDeclaration]: kind: objc-instance-method | name: meth | >>>> {{.*}} loc: 54:1 | {{.*}} | isRedecl: 0 | isDef: 0 | >>>> +// CHECK: [indexDeclaration]: kind: objc-instance-method | name: meth | >>>> {{.*}} loc: 54:8 | {{.*}} | isRedecl: 0 | isDef: 0 | >>>> // CHECK: [indexDeclaration]: kind: objc-property | name: c | USR: >>>> c:objc(cs)I5(cpy)c | lang: ObjC | cursor: ObjCPropertyDecl=c:55:23 >>>> [class,] | loc: 55:23 >>>> >>>> Modified: cfe/trunk/test/Index/index-module.m >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/index-module.m?rev=293134&r1=293133&r2=293134&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/test/Index/index-module.m (original) >>>> +++ cfe/trunk/test/Index/index-module.m Wed Jan 25 20:11:50 2017 >>>> @@ -52,7 +52,7 @@ int glob; >>>> // CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class | name: Module | >>>> {{.*}} | loc: [[TMOD_MODULE_H]]:15:12 >>>> // CHECK-TMOD-NEXT: <ObjCContainerInfo>: kind: interface >>>> // CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class-method | name: >>>> version | {{.*}} | loc: [[TMOD_MODULE_H]]:16:1 >>>> -// CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class-method | name: >>>> alloc | {{.*}} | loc: [[TMOD_MODULE_H]]:17:1 >>>> +// CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class-method | name: >>>> alloc | {{.*}} | loc: [[TMOD_MODULE_H]]:17:2 >>>> // CHECK-TMOD-NEXT: [indexDeclaration]: kind: typedef | name: FILE | >>>> {{.*}} | loc: [[TMOD_MODULE_H]]:30:3 >>>> // CHECK-TMOD-NEXT: [indexDeclaration]: kind: struct | name: __sFILE | >>>> {{.*}} | loc: [[TMOD_MODULE_H]]:28:16 >>>> // CHECK-TMOD-NEXT: [indexDeclaration]: kind: field | name: _offset | >>>> {{.*}} | loc: [[TMOD_MODULE_H]]:29:7 >>>> >>>> Modified: cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp?rev=293134&r1=293133&r2=293134&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp (original) >>>> +++ cfe/trunk/tools/libclang/CXIndexDataConsumer.cpp Wed Jan 25 20:11:50 >>>> 2017 >>>> @@ -95,7 +95,7 @@ public: >>>> if (isa<ObjCImplDecl>(LexicalDC) && !D->isThisDeclarationADefinition()) >>>> DataConsumer.handleSynthesizedObjCMethod(D, DeclLoc, LexicalDC); >>>> else >>>> - DataConsumer.handleObjCMethod(D); >>>> + DataConsumer.handleObjCMethod(D, DeclLoc); >>>> return true; >>>> } >>>> >>>> @@ -801,7 +801,8 @@ bool CXIndexDataConsumer::handleObjCCate >>>> return handleObjCContainer(D, CategoryLoc, getCursor(D), CatDInfo); >>>> } >>>> >>>> -bool CXIndexDataConsumer::handleObjCMethod(const ObjCMethodDecl *D) { >>>> +bool CXIndexDataConsumer::handleObjCMethod(const ObjCMethodDecl *D, >>>> + SourceLocation Loc) { >>>> bool isDef = D->isThisDeclarationADefinition(); >>>> bool isContainer = isDef; >>>> bool isSkipped = false; >>>> @@ -814,7 +815,7 @@ bool CXIndexDataConsumer::handleObjCMeth >>>> DeclInfo DInfo(!D->isCanonicalDecl(), isDef, isContainer); >>>> if (isSkipped) >>>> DInfo.flags |= CXIdxDeclFlag_Skipped; >>>> - return handleDecl(D, D->getLocation(), getCursor(D), DInfo); >>>> + return handleDecl(D, Loc, getCursor(D), DInfo); >>>> } >>>> >>>> bool CXIndexDataConsumer::handleSynthesizedObjCProperty( >>>> >>>> Modified: cfe/trunk/tools/libclang/CXIndexDataConsumer.h >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CXIndexDataConsumer.h?rev=293134&r1=293133&r2=293134&view=diff >>>> ============================================================================== >>>> --- cfe/trunk/tools/libclang/CXIndexDataConsumer.h (original) >>>> +++ cfe/trunk/tools/libclang/CXIndexDataConsumer.h Wed Jan 25 20:11:50 2017 >>>> @@ -418,7 +418,7 @@ public: >>>> bool handleObjCCategory(const ObjCCategoryDecl *D); >>>> bool handleObjCCategoryImpl(const ObjCCategoryImplDecl *D); >>>> >>>> - bool handleObjCMethod(const ObjCMethodDecl *D); >>>> + bool handleObjCMethod(const ObjCMethodDecl *D, SourceLocation Loc); >>>> >>>> bool handleSynthesizedObjCProperty(const ObjCPropertyImplDecl *D); >>>> bool handleSynthesizedObjCMethod(const ObjCMethodDecl *D, SourceLocation >>>> Loc, >>>> >>>> >>>> _______________________________________________ >>>> cfe-commits mailing list >>>> cfe-commits@lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits