r173811 - Mark a struct definition in an objc container with the TopLevelDeclInObjCContainer bit.
Argyrios Kyrtzidis
akyrtzi at gmail.com
Tue Jan 29 10:00:54 PST 2013
Author: akirtzidis
Date: Tue Jan 29 12:00:54 2013
New Revision: 173811
URL: http://llvm.org/viewvc/llvm-project?rev=173811&view=rev
Log:
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
Added:
cfe/trunk/test/Index/getcursor-preamble.h
cfe/trunk/test/Index/getcursor-preamble.m
Modified:
cfe/trunk/lib/Sema/SemaDecl.cpp
Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=173811&r1=173810&r2=173811&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDecl.cpp Tue Jan 29 12:00:54 2013
@@ -9761,7 +9761,11 @@ void Sema::ActOnTagFinishDefinition(Scop
// 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);
}
Added: cfe/trunk/test/Index/getcursor-preamble.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/getcursor-preamble.h?rev=173811&view=auto
==============================================================================
--- cfe/trunk/test/Index/getcursor-preamble.h (added)
+++ cfe/trunk/test/Index/getcursor-preamble.h Tue Jan 29 12:00:54 2013
@@ -0,0 +1,8 @@
+ at interface I {
+ struct AA {
+ int x;
+ } aa;
+ int var;
+}
+-(id)foo;
+ at end
Added: cfe/trunk/test/Index/getcursor-preamble.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/getcursor-preamble.m?rev=173811&view=auto
==============================================================================
--- cfe/trunk/test/Index/getcursor-preamble.m (added)
+++ cfe/trunk/test/Index/getcursor-preamble.m Tue Jan 29 12:00:54 2013
@@ -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
More information about the cfe-commits
mailing list