mirror of https://github.com/microsoft/clang.git
Mark a struct definition in an objc container with the TopLevelDeclInObjCContainer bit.
Fixes accurately getting a cursor inside an objc container containing a struct definition, from a PCH/preamble file. rdar://12584613 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173811 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1579605ad
commit
3d207e76a1
|
@ -9761,7 +9761,11 @@ void Sema::ActOnTagFinishDefinition(Scope *S, Decl *TagD,
|
|||
|
||||
// Exit this scope of this tag's definition.
|
||||
PopDeclContext();
|
||||
|
||||
|
||||
if (getCurLexicalContext()->isObjCContainer() &&
|
||||
Tag->getDeclContext()->isFileContext())
|
||||
Tag->setTopLevelDeclInObjCContainer();
|
||||
|
||||
// Notify the consumer that we've defined a tag.
|
||||
Consumer.HandleTagDeclDefinition(Tag);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
@interface I {
|
||||
struct AA {
|
||||
int x;
|
||||
} aa;
|
||||
int var;
|
||||
}
|
||||
-(id)foo;
|
||||
@end
|
|
@ -0,0 +1,21 @@
|
|||
#include "getcursor-preamble.h"
|
||||
|
||||
// RUN: c-index-test -cursor-at=%S/getcursor-preamble.h:2:10 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:3:9 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:4:6 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:5:8 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:7:7 \
|
||||
// RUN: %s | FileCheck %s
|
||||
|
||||
// RUN: CINDEXTEST_EDITING=1 c-index-test -cursor-at=%S/getcursor-preamble.h:2:10 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:3:9 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:4:6 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:5:8 \
|
||||
// RUN: -cursor-at=%S/getcursor-preamble.h:7:7 \
|
||||
// RUN: %s | FileCheck %s
|
||||
|
||||
// CHECK: StructDecl=AA:2:10
|
||||
// CHECK: FieldDecl=x:3:9
|
||||
// CHECK: ObjCIvarDecl=aa:4:5
|
||||
// CHECK: ObjCIvarDecl=var:5:7
|
||||
// CHECK: ObjCInstanceMethodDecl=foo:7:6
|
Loading…
Reference in New Issue