diff options
-rw-r--r-- | test/Index/annotate-tokens.m | 13 | ||||
-rw-r--r-- | test/Index/get-cursor.m | 10 | ||||
-rw-r--r-- | tools/libclang/CIndex.cpp | 5 |
3 files changed, 28 insertions, 0 deletions
diff --git a/test/Index/annotate-tokens.m b/test/Index/annotate-tokens.m index 1dc7621232..adc472374e 100644 --- a/test/Index/annotate-tokens.m +++ b/test/Index/annotate-tokens.m @@ -137,6 +137,11 @@ static Rdar8595462_A * Rdar8595462_staticVar; @property (readonly, atomic) Foo *abah; @end +@interface rdar9535717 { + __weak Foo *foo; +} +@end + // RUN: c-index-test -test-annotate-tokens=%s:1:1:118:1 %s -DIBOutlet='__attribute__((iboutlet))' -DIBAction='void)__attribute__((ibaction)' | FileCheck %s // CHECK: Punctuation: "@" [1:1 - 1:2] ObjCInterfaceDecl=Foo:1:12 // CHECK: Keyword: "interface" [1:2 - 1:11] ObjCInterfaceDecl=Foo:1:12 @@ -561,3 +566,11 @@ static Rdar8595462_A * Rdar8595462_staticVar; // CHECK-PROP-AFTER-METHOD: Identifier: "abah" [137:35 - 137:39] ObjCPropertyDecl=abah:137:35 // CHECK-PROP-AFTER-METHOD: Punctuation: ";" [137:39 - 137:40] ObjCInterfaceDecl=Rdar8062781:134:12 // CHECK-PROP-AFTER-METHOD: Punctuation: "@" [138:1 - 138:2] ObjCInterfaceDecl=Rdar8062781:134:12 + +// RUN: c-index-test -test-annotate-tokens=%s:141:1:142:1 %s -DIBOutlet='__attribute__((iboutlet))' -DIBAction='void)__attribute__((ibaction)' | FileCheck -check-prefix=CHECK-WITH-WEAK %s +// CHECK-WITH-WEAK: Identifier: "__weak" [141:3 - 141:9] macro expansion=__weak:137:9 +// CHECK-WITH-WEAK: Identifier: "Foo" [141:10 - 141:13] ObjCClassRef=Foo:1:12 +// CHECK-WITH-WEAK: Punctuation: "*" [141:14 - 141:15] ObjCIvarDecl=foo:141:15 (Definition) +// CHECK-WITH-WEAK: Identifier: "foo" [141:15 - 141:18] ObjCIvarDecl=foo:141:15 (Definition) +// CHECK-WITH-WEAK: Punctuation: ";" [141:18 - 141:19] ObjCInterfaceDecl=rdar9535717:140:12 +// CHECK-WITH-WEAK: Punctuation: "}" [142:1 - 142:2] ObjCInterfaceDecl=rdar9535717:140:12 diff --git a/test/Index/get-cursor.m b/test/Index/get-cursor.m index 9932605647..422acfc201 100644 --- a/test/Index/get-cursor.m +++ b/test/Index/get-cursor.m @@ -5,7 +5,17 @@ @property (readwrite) int foo2; @end +@class Foo; + +@interface rdar9535717 { + __weak Foo *foo; +} +@end + // RUN: c-index-test -cursor-at=%s:4:28 %s | FileCheck -check-prefix=CHECK-PROP1 %s // RUN: c-index-test -cursor-at=%s:5:28 %s | FileCheck -check-prefix=CHECK-PROP2 %s // CHECK-PROP1: ObjCPropertyDecl=foo1:4:26 // CHECK-PROP2: ObjCPropertyDecl=foo2:5:27 + +// RUN: c-index-test -cursor-at=%s:11:11 %s | FileCheck -check-prefix=CHECK-WITH-WEAK %s +// CHECK-WITH-WEAK: ObjCClassRef=Foo:8:8 diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index cd4467c523..bd3cac3360 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -348,6 +348,7 @@ public: bool VisitMemberPointerTypeLoc(MemberPointerTypeLoc TL); bool VisitLValueReferenceTypeLoc(LValueReferenceTypeLoc TL); bool VisitRValueReferenceTypeLoc(RValueReferenceTypeLoc TL); + bool VisitAttributedTypeLoc(AttributedTypeLoc TL); bool VisitFunctionTypeLoc(FunctionTypeLoc TL, bool SkipResultType = false); bool VisitArrayTypeLoc(ArrayTypeLoc TL); bool VisitTemplateSpecializationTypeLoc(TemplateSpecializationTypeLoc TL); @@ -1521,6 +1522,10 @@ bool CursorVisitor::VisitRValueReferenceTypeLoc(RValueReferenceTypeLoc TL) { return Visit(TL.getPointeeLoc()); } +bool CursorVisitor::VisitAttributedTypeLoc(AttributedTypeLoc TL) { + return Visit(TL.getModifiedLoc()); +} + bool CursorVisitor::VisitFunctionTypeLoc(FunctionTypeLoc TL, bool SkipResultType) { if (!SkipResultType && Visit(TL.getResultLoc())) |