diff options
Diffstat (limited to 'test/Index/Core')
-rw-r--r-- | test/Index/Core/Inputs/module/ModA.h | 2 | ||||
-rw-r--r-- | test/Index/Core/Inputs/module/SubModA.h | 2 | ||||
-rw-r--r-- | test/Index/Core/Inputs/module/SubSubModA.h | 2 | ||||
-rw-r--r-- | test/Index/Core/Inputs/module/module.modulemap | 11 | ||||
-rw-r--r-- | test/Index/Core/Inputs/sys/system-head.h | 36 | ||||
-rw-r--r-- | test/Index/Core/designated-inits.c | 33 | ||||
-rw-r--r-- | test/Index/Core/external-source-symbol-attr.m | 104 | ||||
-rw-r--r-- | test/Index/Core/index-dependent-source.cpp | 226 | ||||
-rw-r--r-- | test/Index/Core/index-instantiated-source.cpp | 88 | ||||
-rw-r--r-- | test/Index/Core/index-macros.c | 12 | ||||
-rw-r--r-- | test/Index/Core/index-pch.c | 13 | ||||
-rw-r--r-- | test/Index/Core/index-pch.cpp | 17 | ||||
-rw-r--r-- | test/Index/Core/index-source-invalid-name.cpp | 13 | ||||
-rw-r--r-- | test/Index/Core/index-source.cpp | 562 | ||||
-rw-r--r-- | test/Index/Core/index-source.m | 492 | ||||
-rw-r--r-- | test/Index/Core/index-source.mm | 11 | ||||
-rw-r--r-- | test/Index/Core/index-subkinds.m | 60 | ||||
-rw-r--r-- | test/Index/Core/index-system.mm | 3 | ||||
-rw-r--r-- | test/Index/Core/index-with-module.m | 24 | ||||
-rw-r--r-- | test/Index/Core/no-templated-canonical-decl.cpp | 4 |
20 files changed, 0 insertions, 1715 deletions
diff --git a/test/Index/Core/Inputs/module/ModA.h b/test/Index/Core/Inputs/module/ModA.h deleted file mode 100644 index 081d86cc4516c..0000000000000 --- a/test/Index/Core/Inputs/module/ModA.h +++ /dev/null @@ -1,2 +0,0 @@ - -void ModA_func(void); diff --git a/test/Index/Core/Inputs/module/SubModA.h b/test/Index/Core/Inputs/module/SubModA.h deleted file mode 100644 index 59d243ecfa646..0000000000000 --- a/test/Index/Core/Inputs/module/SubModA.h +++ /dev/null @@ -1,2 +0,0 @@ - -void SubModA_func(void); diff --git a/test/Index/Core/Inputs/module/SubSubModA.h b/test/Index/Core/Inputs/module/SubSubModA.h deleted file mode 100644 index 51ffa910f7a34..0000000000000 --- a/test/Index/Core/Inputs/module/SubSubModA.h +++ /dev/null @@ -1,2 +0,0 @@ - -void SubSubModA_func(void); diff --git a/test/Index/Core/Inputs/module/module.modulemap b/test/Index/Core/Inputs/module/module.modulemap deleted file mode 100644 index 180a4aad36dcd..0000000000000 --- a/test/Index/Core/Inputs/module/module.modulemap +++ /dev/null @@ -1,11 +0,0 @@ -module ModA { - header "ModA.h" export * - - module SubModA { - header "SubModA.h" - - module SubSubModA { - header "SubSubModA.h" - } - } -} diff --git a/test/Index/Core/Inputs/sys/system-head.h b/test/Index/Core/Inputs/sys/system-head.h deleted file mode 100644 index df0e39ed86137..0000000000000 --- a/test/Index/Core/Inputs/sys/system-head.h +++ /dev/null @@ -1,36 +0,0 @@ -// CHECK: [[@LINE+1]]:12 | class/ObjC | Base | [[Base_USR:.*]] | {{.*}} | Decl | rel: 0 -@interface Base -@end - -// CHECK: [[@LINE+1]]:11 | protocol/ObjC | Prot1 | [[Prot1_USR:.*]] | {{.*}} | Decl | rel: 0 -@protocol Prot1 -@end - -// CHECK: [[@LINE+3]]:11 | protocol/ObjC | Prot2 | [[Prot2_USR:.*]] | {{.*}} | Decl | rel: 0 -// CHECK: [[@LINE+2]]:17 | protocol/ObjC | Prot1 | [[Prot1_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Prot2 | [[Prot2_USR]] -@protocol Prot2<Prot1> -@end - -// CHECK: [[@LINE+7]]:12 | class/ObjC | Sub | [[Sub_USR:.*]] | {{.*}} | Decl | rel: 0 -// CHECK: [[@LINE+6]]:18 | class/ObjC | Base | [[Base_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Sub | [[Sub_USR]] -// CHECK: [[@LINE+4]]:23 | protocol/ObjC | Prot2 | [[Prot2_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Sub | [[Sub_USR]] -// CHECK: [[@LINE+2]]:30 | protocol/ObjC | Prot1 | [[Prot1_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Sub | [[Sub_USR]] -@interface Sub : Base<Prot2, Prot1> -// CHECK-NOT: [[@LINE+1]]:3 | class/ObjC | Sub | --(Sub*)getit; -@end - -// CHECK: [[@LINE+1]]:7 | class/C++ | Cls | [[Cls_USR:.*]] | {{.*}} | Def | rel: 0 -class Cls {}; - -// CHECK: [[@LINE+3]]:7 | class/C++ | SubCls1 | [[SubCls1_USR:.*]] | {{.*}} | Def | rel: 0 -// CHECK: [[@LINE+2]]:24 | class/C++ | Cls | [[Cls_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | SubCls1 | [[SubCls1_USR]] -class SubCls1 : public Cls { - // CHECK-NOT: [[@LINE+1]]:3 | class/C++ | SubCls1 | - SubCls1 *f; -}; diff --git a/test/Index/Core/designated-inits.c b/test/Index/Core/designated-inits.c deleted file mode 100644 index a31cb95a4b82d..0000000000000 --- a/test/Index/Core/designated-inits.c +++ /dev/null @@ -1,33 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -target x86_64-apple-macosx10.7 | FileCheck %s - -struct MyStruct { - int myfield; -}; - -enum { - MyValToSet -}; - -// CHECK: [[@LINE+1]]:14 | struct/C | MyStruct | -const struct MyStruct _MyStruct[] - [16] - [3] - [3] - [2] - [2] = { - [0] = { - [0] = { - [0] = { - [0][0] = { - [0] = { - // CHECK: [[@LINE+2]]:14 | field/C | myfield | {{.*}} | Ref,RelCont | - // CHECK: [[@LINE+1]]:24 | enumerator/C | MyValToSet | - .myfield = MyValToSet, - // CHECK-NOT: | field/C | myfield | - // CHECK-NOT: | enumerator/C | MyValToSet | - }, - }, - }, - }, - }, -}; diff --git a/test/Index/Core/external-source-symbol-attr.m b/test/Index/Core/external-source-symbol-attr.m deleted file mode 100644 index 41bb7a264ab3e..0000000000000 --- a/test/Index/Core/external-source-symbol-attr.m +++ /dev/null @@ -1,104 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -target x86_64-apple-macosx10.7 | FileCheck %s - -#define EXT_DECL(mod_name) __attribute__((external_source_symbol(language="Swift", defined_in=mod_name))) -#define GEN_DECL(mod_name) __attribute__((external_source_symbol(language="Swift", defined_in=mod_name, generated_declaration))) -#define PUSH_GEN_DECL(mod_name) push(GEN_DECL(mod_name), apply_to=any(enum, objc_interface, objc_category, objc_protocol)) - -// Forward declarations should not affect module namespacing below -@class I1; -@class I2; - -// This should not be indexed. -GEN_DECL("some_module") -@interface I1 -// CHECK-NOT: [[@LINE-1]]:12 | --(void)method; -// CHECK-NOT: [[@LINE-1]]:8 | -@end - -EXT_DECL("some_module") -@interface I2 -// CHECK: [[@LINE-1]]:12 | class/Swift | I2 | c:@M@some_module@objc(cs)I2 | {{.*}} | Decl | rel: 0 --(void)method; -// CHECK: [[@LINE-1]]:8 | instance-method/Swift | method | c:@M@some_module@objc(cs)I2(im)method | -[I2 method] | Decl,Dyn,RelChild | rel: 1 -@end - -void test1(I1 *o) { -// CHECK: [[@LINE-1]]:12 | class/Swift | I1 | c:@M@some_module@objc(cs)I1 | - [o method]; - // CHECK: [[@LINE-1]]:6 | instance-method/Swift | method | c:@M@some_module@objc(cs)I1(im)method | -} - -EXT_DECL("some_module") -@protocol ExtProt -// CHECK: [[@LINE-1]]:11 | protocol/Swift | ExtProt | c:@M@some_module@objc(pl)ExtProt | -@end - -@interface I1(cat) -// CHECK: [[@LINE-1]]:15 | extension/ObjC | cat | c:@M@some_module@objc(cy)I1@cat | --(void)cat_method; -// CHECK: [[@LINE-1]]:8 | instance-method/ObjC | cat_method | c:@M@some_module@objc(cs)I1(im)cat_method -@end - -EXT_DECL("cat_module") -@interface I1(cat2) -// CHECK: [[@LINE-1]]:15 | extension/Swift | cat2 | c:@CM@cat_module@some_module@objc(cy)I1@cat2 | --(void)cat_method2; -// CHECK: [[@LINE-1]]:8 | instance-method/Swift | cat_method2 | c:@CM@cat_module@some_module@objc(cs)I1(im)cat_method2 -@end - -#define NS_ENUM(_name, _type) enum _name:_type _name; enum _name : _type - -#pragma clang attribute PUSH_GEN_DECL("modname") - -@interface I3 -// CHECK-NOT: [[@LINE-1]]:12 | --(void)meth; -// CHECK-NOT: [[@LINE-1]]:8 | -@end - -@interface I3(cat) -// CHECK-NOT: [[@LINE-1]]:12 | -// CHECK-NOT: [[@LINE-2]]:15 | --(void)meth2; -// CHECK-NOT: [[@LINE-1]]:8 | -@end - -@protocol ExtProt2 -// CHECK-NOT: [[@LINE-1]]:11 | --(void)meth; -// CHECK-NOT: [[@LINE-1]]:8 | -@end - -typedef NS_ENUM(SomeEnum, int) { -// CHECK-NOT: [[@LINE-1]]:17 | - SomeEnumFirst = 0, - // CHECK-NOT: [[@LINE-1]]:3 | -}; - -#pragma clang attribute pop - -void test2(I3 *i3, id<ExtProt2> prot2, SomeEnum some) { - // CHECK: [[@LINE-1]]:12 | class/Swift | I3 | c:@M@modname@objc(cs)I3 | - // CHECK: [[@LINE-2]]:23 | protocol/Swift | ExtProt2 | c:@M@modname@objc(pl)ExtProt2 | - // CHECK: [[@LINE-3]]:40 | enum/Swift | SomeEnum | c:@M@modname@E@SomeEnum | - [i3 meth]; - // CHECK: [[@LINE-1]]:7 | instance-method/Swift | meth | c:@M@modname@objc(cs)I3(im)meth | - [i3 meth2]; - // CHECK: [[@LINE-1]]:7 | instance-method/Swift | meth2 | c:@CM@modname@objc(cs)I3(im)meth2 | - [prot2 meth]; - // CHECK: [[@LINE-1]]:10 | instance-method(protocol)/Swift | meth | c:@M@modname@objc(pl)ExtProt2(im)meth | - some = SomeEnumFirst; - // CHECK: [[@LINE-1]]:10 | enumerator/Swift | SomeEnumFirst | c:@M@modname@E@SomeEnum@SomeEnumFirst | -} - -#pragma clang attribute PUSH_GEN_DECL("other_mod_for_cat") -@interface I3(cat_other_mod) --(void)meth_other_mod; -@end -#pragma clang attribute pop - -void test3(I3 *i3) { - [i3 meth_other_mod]; - // CHECK: [[@LINE-1]]:7 | instance-method/Swift | meth_other_mod | c:@CM@other_mod_for_cat@modname@objc(cs)I3(im)meth_other_mod | -} diff --git a/test/Index/Core/index-dependent-source.cpp b/test/Index/Core/index-dependent-source.cpp deleted file mode 100644 index 2e111339af612..0000000000000 --- a/test/Index/Core/index-dependent-source.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -std=c++14 -target x86_64-apple-macosx10.7 | FileCheck %s - -int invalid; - -class Base { - void baseFunction(); - - int baseField; - - static void staticBaseFunction(); -}; - -template<typename T> -class BaseTemplate { -public: - T baseTemplateFunction(); - - T baseTemplateField; - - static T baseTemplateVariable; -}; - -template<typename T, typename S> -class TemplateClass: public Base , public BaseTemplate<T> { -public: - ~TemplateClass(); - - T function() { } - - static void staticFunction() { } - - T field; - - static T variable; - - struct Struct { }; - - enum Enum { EnumValue }; - - using TypeAlias = S; - typedef T Typedef; - - void overload1(const T &); - void overload1(const S &); -}; - -template<typename T, typename S> -void indexSimpleDependentDeclarations(const TemplateClass<T, S> &object) { - // Valid instance members: - object.function(); -// CHECK: [[@LINE-1]]:10 | instance-method/C++ | function | c:@ST>2#T#T@TemplateClass@F@function# | <no-cgname> | Ref,Call,RelCall,RelCont | rel: 1 - object.field; -// CHECK: [[@LINE-1]]:10 | field/C++ | field | c:@ST>2#T#T@TemplateClass@FI@field | <no-cgname> | Ref,RelCont | rel: 1 - object.baseFunction(); -// CHECK: [[@LINE-1]]:10 | instance-method/C++ | baseFunction | c:@S@Base@F@baseFunction# | __ZN4Base12baseFunctionEv | Ref,Call,RelCall,RelCont | rel: 1 - object.baseField; -// CHECK: [[@LINE-1]]:10 | field/C++ | baseField | c:@S@Base@FI@baseField | <no-cgname> | Ref,RelCont | rel: 1 - object.baseTemplateFunction(); -// CHECK: [[@LINE-1]]:10 | instance-method/C++ | baseTemplateFunction | c:@ST>1#T@BaseTemplate@F@baseTemplateFunction# | <no-cgname> | Ref,Call,RelCall,RelCont | rel: 1 - object.baseTemplateField; -// CHECK: [[@LINE-1]]:10 | field/C++ | baseTemplateField | c:@ST>1#T@BaseTemplate@FI@baseTemplateField | <no-cgname> | Ref,RelCont | rel: 1 - - // Invalid instance members: - object.variable; -// CHECK-NOT: [[@LINE-1]]:10 - object.staticFunction(); -// CHECK-NOT: [[@LINE-1]]:10 - object.Struct; -// CHECK-NOT: [[@LINE-1]]:10 - object.EnumValue; -// CHECK-NOT: [[@LINE-1]]:10 - - // Valid static members: - TemplateClass<T, S>::staticFunction(); -// CHECK: [[@LINE-1]]:24 | static-method/C++ | staticFunction | c:@ST>2#T#T@TemplateClass@F@staticFunction#S | <no-cgname> | Ref,Call,RelCall,RelCont | rel: 1 - TemplateClass<T, S>::variable; -// CHECK: [[@LINE-1]]:24 | static-property/C++ | variable | c:@ST>2#T#T@TemplateClass@variable | __ZN13TemplateClass8variableE | Ref,RelCont | rel: 1 - TemplateClass<T, S>::staticBaseFunction(); -// CHECK: [[@LINE-1]]:24 | static-method/C++ | staticBaseFunction | c:@S@Base@F@staticBaseFunction#S | __ZN4Base18staticBaseFunctionEv | Ref,Call,RelCall,RelCont | rel: 1 - TemplateClass<T, S>::baseTemplateVariable; -// CHECK: [[@LINE-1]]:24 | static-property/C++ | baseTemplateVariable | c:@ST>1#T@BaseTemplate@baseTemplateVariable | __ZN12BaseTemplate20baseTemplateVariableE | Ref,RelCont | rel: 1 - TemplateClass<T, S>::EnumValue; -// CHECK: [[@LINE-1]]:24 | enumerator/C | EnumValue | c:@ST>2#T#T@TemplateClass@E@Enum@EnumValue | <no-cgname> | Ref,RelCont | rel: 1 - TemplateClass<T, S>::Struct(); -// CHECK: [[@LINE-1]]:24 | struct/C | Struct | c:@ST>2#T#T@TemplateClass@S@Struct | <no-cgname> | Ref,Call,RelCall,RelCont | rel: 1 - - // Invalid static members: - TemplateClass<T, S>::field; -// CHECK-NOT: [[@LINE-1]]:24 - TemplateClass<T, S>::function(); -// CHECK-NOT: [[@LINE-1]]:24 - - // Valid type names: - typename TemplateClass<T, S>::Struct Val; -// CHECK: [[@LINE-1]]:33 | struct/C | Struct | c:@ST>2#T#T@TemplateClass@S@Struct | <no-cgname> | Ref,RelCont | rel: 1 - typename TemplateClass<T, S>::Enum EnumVal; -// CHECK: [[@LINE-1]]:33 | enum/C | Enum | c:@ST>2#T#T@TemplateClass@E@Enum | <no-cgname> | Ref,RelCont | rel: 1 - typename TemplateClass<T, S>::TypeAlias Val2; -// CHECK: [[@LINE-1]]:33 | type-alias/C++ | TypeAlias | c:@ST>2#T#T@TemplateClass@TypeAlias | <no-cgname> | Ref,RelCont | rel: 1 - typename TemplateClass<T, S>::Typedef Val3; -// CHECK: [[@LINE-1]]:33 | type-alias/C | Typedef | c:{{.*}}index-dependent-source.cpp@ST>2#T#T@TemplateClass@T@Typedef | <no-cgname> | Ref,RelCont | rel: 1 - - // Invalid type names: - typename TemplateClass<T, S>::field Val4; -// CHECK-NOT: [[@LINE-1]]:33 - typename TemplateClass<T, S>::staticFunction Val5; -// CHECK-NOT: [[@LINE-1]]:33 - - - object.invalid; -// CHECK-NOT: [[@LINE-1]]:10 - TemplateClass<T, S>::invalid; -// CHECK-NOT: [[@LINE-1]]:24 -} - -template<typename T, typename S, typename Y> -void indexDependentOverloads(const TemplateClass<T, S> &object) { - object.overload1(T()); -// CHECK-NOT: [[@LINE-1]] - object.overload1(S()); -// CHECK-NOT: [[@LINE-1]] - object.overload1(Y()); -// CHECK-NOT: [[@LINE-1]] -} - -template<typename T> struct UndefinedTemplateClass; - -template<typename T> -void undefinedTemplateLookup(UndefinedTemplateClass<T> &x) { -// Shouldn't crash! - x.lookup; - typename UndefinedTemplateClass<T>::Type y; -} - -template<typename T> -struct UserOfUndefinedTemplateClass: UndefinedTemplateClass<T> { }; - -template<typename T> -void undefinedTemplateLookup2(UserOfUndefinedTemplateClass<T> &x) { -// Shouldn't crash! - x.lookup; - typename UserOfUndefinedTemplateClass<T>::Type y; -} - -template<typename T> struct Dropper; - -template<typename T> struct Trait; - -template<typename T> -struct Recurse : Trait<typename Dropper<T>::Type> { }; - -template<typename T> -struct Trait : Recurse<T> { -}; - -template<typename T> -void infiniteTraitRecursion(Trait<T> &t) { -// Shouldn't crash! - t.lookup; -} - -template <typename T> -struct UsingA { -// CHECK: [[@LINE+1]]:15 | type-alias/C | Type | c:index-dependent-source.cpp@ST>1#T@UsingA@T@Type | <no-cgname> | Def,RelChild | rel: 1 - typedef int Type; -// CHECK: [[@LINE+1]]:15 | static-method/C++ | func | c:@ST>1#T@UsingA@F@func#S | <no-cgname> | Decl,RelChild | rel: 1 - static void func(); -// CHECK: [[@LINE+1]]:8 | instance-method/C++ | operator() | c:@ST>1#T@UsingA@F@operator()#I# | <no-cgname> | Decl,RelChild | rel: 1 - void operator()(int); -// CHECK: [[@LINE+1]]:8 | instance-method/C++ | operator+ | c:@ST>1#T@UsingA@F@operator+#&1>@ST>1#T@UsingA1t0.0# | <no-cgname> | Decl,RelChild | rel: 1 - void operator+(const UsingA &); -}; - -template <typename T> -struct OtherUsing {}; - -template <typename T> -struct UsingB : public UsingA<T> { -// CHECK: [[@LINE+2]]:40 | type-alias/C | TypeB | c:index-dependent-source.cpp@ST>1#T@UsingB@T@TypeB | <no-cgname> | Def,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:20 | struct(Gen)/C++ | OtherUsing | c:@ST>1#T@OtherUsing | <no-cgname> | Ref,RelCont | rel: 1 - typedef typename OtherUsing<T>::Type TypeB; -// CHECK: [[@LINE+2]]:29 | using/using-typename(Gen)/C++ | Type | c:index-dependent-source.cpp@ST>1#T@UsingB@UUT@UsingA<T>::Type | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:18 | struct(Gen)/C++ | UsingA | c:@ST>1#T@UsingA | <no-cgname> | Ref,RelCont | rel: 1 - using typename UsingA<T>::Type; -// CHECK: [[@LINE+2]]:20 | using/using-value(Gen)/C++ | func | c:index-dependent-source.cpp@ST>1#T@UsingB@UUV@UsingA<T>::func | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:9 | struct(Gen)/C++ | UsingA | c:@ST>1#T@UsingA | <no-cgname> | Ref,RelCont | rel: 1 - using UsingA<T>::func; - -// CHECK: [[@LINE+2]]:20 | using/using-value(Gen)/C++ | operator() | c:index-dependent-source.cpp@ST>1#T@UsingB@UUV@UsingA<T>::operator() | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:9 | struct(Gen)/C++ | UsingA | c:@ST>1#T@UsingA | <no-cgname> | Ref,RelCont | rel: 1 - using UsingA<T>::operator(); -// CHECK: [[@LINE+2]]:20 | using/using-value(Gen)/C++ | operator+ | c:index-dependent-source.cpp@ST>1#T@UsingB@UUV@UsingA<T>::operator+ | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:9 | struct(Gen)/C++ | UsingA | c:@ST>1#T@UsingA | <no-cgname> | Ref,RelCont | rel: 1 - using UsingA<T>::operator+; -}; - -template <typename T> -struct UsingC : public UsingB<T> { - static void test() { -// CHECK: [[@LINE+2]]:25 | type-alias/C | TypeB | c:index-dependent-source.cpp@ST>1#T@UsingB@T@TypeB | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:14 | struct(Gen)/C++ | UsingB | c:@ST>1#T@UsingB | <no-cgname> | Ref,RelCont | rel: 1 - typename UsingB<T>::TypeB value1; -// CHECK: [[@LINE+2]]:25 | using/using-typename(Gen)/C++ | Type | c:index-dependent-source.cpp@ST>1#T@UsingB@UUT@UsingA<T>::Type | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:14 | struct(Gen)/C++ | UsingB | c:@ST>1#T@UsingB | <no-cgname> | Ref,RelCont | rel: 1 - typename UsingB<T>::Type value2; -// CHECK: [[@LINE+2]]:16 | using/using-value(Gen)/C++ | func | c:index-dependent-source.cpp@ST>1#T@UsingB@UUV@UsingA<T>::func | <no-cgname> | Ref,Call,RelCall,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:5 | struct(Gen)/C++ | UsingB | c:@ST>1#T@UsingB | <no-cgname> | Ref,RelCont | rel: 1 - UsingB<T>::func(); - } -}; - -template <typename T> -struct UsingD { -// CHECK: [[@LINE+1]]:8 | instance-method/C++ | foo | c:@ST>1#T@UsingD@F@foo#t0.0# | <no-cgname> | Decl,RelChild | rel: 1 - void foo(T); -}; - -template <typename T, typename U> -struct UsingE : public UsingD<T>, public UsingD<U> { -// CHECK: [[@LINE+2]]:20 | using/using-value(Gen)/C++ | foo | c:index-dependent-source.cpp@ST>2#T#T@UsingE@UUV@UsingD<T>::foo | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:9 | struct(Gen)/C++ | UsingD | c:@ST>1#T@UsingD | <no-cgname> | Ref,RelCont | rel: 1 - using UsingD<T>::foo; -// CHECK: [[@LINE+2]]:20 | using/using-value(Gen)/C++ | foo | c:index-dependent-source.cpp@ST>2#T#T@UsingE@UUV@UsingD<U>::foo | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:9 | struct(Gen)/C++ | UsingD | c:@ST>1#T@UsingD | <no-cgname> | Ref,RelCont | rel: 1 - using UsingD<U>::foo; -}; diff --git a/test/Index/Core/index-instantiated-source.cpp b/test/Index/Core/index-instantiated-source.cpp deleted file mode 100644 index 7a810fbdf3a87..0000000000000 --- a/test/Index/Core/index-instantiated-source.cpp +++ /dev/null @@ -1,88 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -std=c++14 -target x86_64-apple-macosx10.7 | FileCheck %s -// References to declarations in instantiations should be canonicalized: - -template<typename T> -class BaseTemplate { -public: - T baseTemplateFunction(); -// CHECK: [[@LINE-1]]:5 | instance-method/C++ | baseTemplateFunction | c:@ST>1#T@BaseTemplate@F@baseTemplateFunction# - - T baseTemplateField; -// CHECK: [[@LINE-1]]:5 | field/C++ | baseTemplateField | c:@ST>1#T@BaseTemplate@FI@baseTemplateField - - struct NestedBaseType { }; -// CHECK: [[@LINE-1]]:10 | struct/C | NestedBaseType | c:@ST>1#T@BaseTemplate@S@NestedBaseType | -}; - -template<typename T, typename S> -class TemplateClass: public BaseTemplate<T> { -public: - T function() { return T(); } -// CHECK: [[@LINE-1]]:5 | instance-method/C++ | function | c:@ST>2#T#T@TemplateClass@F@function# - - static void staticFunction() { } -// CHECK: [[@LINE-1]]:15 | static-method/C++ | staticFunction | c:@ST>2#T#T@TemplateClass@F@staticFunction#S - - T field; -// CHECK: [[@LINE-1]]:5 | field/C++ | field | c:@ST>2#T#T@TemplateClass@FI@field - - struct NestedType { -// CHECK: [[@LINE-1]]:10 | struct/C++ | NestedType | c:@ST>2#T#T@TemplateClass@S@NestedType | - - T nestedField; -// CHECK: [[@LINE-1]]:7 | field/C++ | nestedField | c:@ST>2#T#T@TemplateClass@S@NestedType@FI@nestedField | - - class SubNestedType { -// CHECK: [[@LINE-1]]:11 | class/C++ | SubNestedType | c:@ST>2#T#T@TemplateClass@S@NestedType@S@SubNestedType | - public: - SubNestedType(int); - }; - using TypeAlias = T; -// CHECK: [[@LINE-1]]:11 | type-alias/C++ | TypeAlias | c:@ST>2#T#T@TemplateClass@S@NestedType@TypeAlias | - - typedef int Typedef; -// CHECK: [[@LINE-1]]:17 | type-alias/C | Typedef | c:{{.*}}index-instantiated-source.cpp@ST>2#T#T@TemplateClass@S@NestedType@T@Typedef | - - enum Enum { -// CHECK: [[@LINE-1]]:10 | enum/C | Enum | c:@ST>2#T#T@TemplateClass@S@NestedType@E@Enum | - EnumCase -// CHECK: [[@LINE-1]]:7 | enumerator/C | EnumCase | c:@ST>2#T#T@TemplateClass@S@NestedType@E@Enum@EnumCase | - }; - }; -}; - -void canonicalizeInstaniationReferences(TemplateClass<int, float> &object) { - (void)object.function(); -// CHECK: [[@LINE-1]]:16 | instance-method/C++ | function | c:@ST>2#T#T@TemplateClass@F@function# | <no-cgname> - (void)object.field; -// CHECK: [[@LINE-1]]:16 | field/C++ | field | c:@ST>2#T#T@TemplateClass@FI@field | <no-cgname> | Ref,RelCont | rel: 1 - (void)object.baseTemplateFunction(); -// CHECK: [[@LINE-1]]:16 | instance-method/C++ | baseTemplateFunction | c:@ST>1#T@BaseTemplate@F@baseTemplateFunction# | <no-cgname> - (void)object.baseTemplateField; -// CHECK: [[@LINE-1]]:16 | field/C++ | baseTemplateField | c:@ST>1#T@BaseTemplate@FI@baseTemplateField | <no-cgname> | Ref,RelCont | rel: 1 - - TemplateClass<int, float>::staticFunction(); -// CHECK: [[@LINE-1]]:30 | static-method/C++ | staticFunction | c:@ST>2#T#T@TemplateClass@F@staticFunction#S | <no-cgname - - TemplateClass<int, float>::NestedBaseType nestedBaseType; -// CHECK: [[@LINE-1]]:30 | struct/C | NestedBaseType | c:@ST>1#T@BaseTemplate@S@NestedBaseType | - TemplateClass<int, float>::NestedType nestedSubType; -// CHECK: [[@LINE-1]]:30 | struct/C++ | NestedType | c:@ST>2#T#T@TemplateClass@S@NestedType | - (void)nestedSubType.nestedField; -// CHECK: [[@LINE-1]]:23 | field/C++ | nestedField | c:@ST>2#T#T@TemplateClass@S@NestedType@FI@nestedField | - - typedef TemplateClass<int, float> TT; - TT::NestedType::SubNestedType subNestedType(0); -// CHECK: [[@LINE-1]]:7 | struct/C++ | NestedType | c:@ST>2#T#T@TemplateClass@S@NestedType | -// CHECK: [[@LINE-2]]:19 | class/C++ | SubNestedType | c:@ST>2#T#T@TemplateClass@S@NestedType@S@SubNestedType | - - TT::NestedType::TypeAlias nestedTypeAlias; -// CHECK: [[@LINE-1]]:19 | type-alias/C++ | TypeAlias | c:@ST>2#T#T@TemplateClass@S@NestedType@TypeAlias | - TT::NestedType::Typedef nestedTypedef; -// CHECK: [[@LINE-1]]:19 | type-alias/C | Typedef | c:{{.*}}index-instantiated-source.cpp@ST>2#T#T@TemplateClass@S@NestedType@T@Typedef | - - TT::NestedType::Enum nestedEnum; -// CHECK: [[@LINE-1]]:19 | enum/C | Enum | c:@ST>2#T#T@TemplateClass@S@NestedType@E@Enum | - (void)TT::NestedType::Enum::EnumCase; -// CHECK: [[@LINE-1]]:31 | enumerator/C | EnumCase | c:@ST>2#T#T@TemplateClass@S@NestedType@E@Enum@EnumCase | -} diff --git a/test/Index/Core/index-macros.c b/test/Index/Core/index-macros.c deleted file mode 100644 index 61e7e76175441..0000000000000 --- a/test/Index/Core/index-macros.c +++ /dev/null @@ -1,12 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s | FileCheck %s - -// CHECK: [[@LINE+1]]:9 | macro/C | X1 | c:index-macros.c@157@macro@X1 | Def | -#define X1 1 -// CHECK: [[@LINE+1]]:9 | macro/C | DEF | c:index-macros.c@251@macro@DEF | Def | -#define DEF(x) int x -// CHECK: [[@LINE+1]]:8 | macro/C | X1 | c:index-macros.c@157@macro@X1 | Undef | -#undef X1 - -// CHECK: [[@LINE+2]]:1 | macro/C | DEF | c:index-macros.c@251@macro@DEF | Ref | -// CHECK: [[@LINE+1]]:5 | variable/C | i | c:@i | {{.*}} | Def | rel: 0 -DEF(i); diff --git a/test/Index/Core/index-pch.c b/test/Index/Core/index-pch.c deleted file mode 100644 index 773cfc59077e6..0000000000000 --- a/test/Index/Core/index-pch.c +++ /dev/null @@ -1,13 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s | FileCheck %s -// RUN: %clang_cc1 -emit-pch %s -o %t.pch -// RUN: c-index-test core -print-source-symbols -module-file %t.pch | FileCheck %s - -// CHECK: [[@LINE+1]]:6 | function/C | test1 | [[TEST1_USR:.*]] | [[TEST1_CG:.*]] | Decl | rel: 0 -void test1(); - -// CHECK: [[@LINE+1]]:20 | function/C | test2 | [[TEST2_USR:.*]] | {{.*}} | Def | rel: 0 -static inline void test2() { - // CHECK: [[@LINE+2]]:3 | function/C | test1 | [[TEST1_USR]] | [[TEST1_CG]] | Ref,Call,RelCall,RelCont | rel: 1 - // CHECK-NEXT: RelCall,RelCont | test2 | [[TEST2_USR]] - test1(); -} diff --git a/test/Index/Core/index-pch.cpp b/test/Index/Core/index-pch.cpp deleted file mode 100644 index 8c5a92b612c4b..0000000000000 --- a/test/Index/Core/index-pch.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -std=c++14 | FileCheck %s -// RUN: %clang_cc1 -emit-pch %s -std=c++14 -o %t.pch -// RUN: c-index-test core -print-source-symbols -module-file %t.pch | FileCheck %s - -// CHECK: [[@LINE+2]]:8 | struct(Gen)/C++ | DETECTOR | [[DETECTOR_USR:.*]] | {{.*}} | Def | rel: 0 -template <class _Default, class _AlwaysVoid, template <class...> class _Op, class... _Args> -struct DETECTOR { - using value_t = int; -}; - -struct nonesuch {}; - -// CHECK: [[@LINE+4]]:9 | type-alias/C++ | is_detected -// CHECK: [[@LINE+3]]:32 | struct(Gen)/C++ | DETECTOR | [[DETECTOR_USR]] | {{.*}} | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | is_detected -template <template<class...> class _Op, class... _Args> - using is_detected = typename DETECTOR<nonesuch, void, _Op, _Args...>::value_t; diff --git a/test/Index/Core/index-source-invalid-name.cpp b/test/Index/Core/index-source-invalid-name.cpp deleted file mode 100644 index 1b4b059cd1b36..0000000000000 --- a/test/Index/Core/index-source-invalid-name.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -std=c++1z -target x86_64-apple-macosx10.7 | FileCheck %s - -namespace rdar32474406 { -// CHECK: [[@LINE+1]]:6 | function/C | foo | c:@N@rdar32474406@F@foo# | __ZN12rdar324744063fooEv | Decl,RelChild | rel: 1 -void foo(); -// CHECK: [[@LINE+1]]:16 | type-alias/C | Func_t | c:index-source-invalid-name.cpp@N@rdar32474406@T@Func_t | <no-cgname> | Def,RelChild | rel: 1 -typedef void (*Func_t)(); -// CHECK: [[@LINE+4]]:1 | type-alias/C | Func_t | c:index-source-invalid-name.cpp@N@rdar32474406@T@Func_t | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | rdar32474406 | c:@N@rdar32474406 -// CHECK: [[@LINE+2]]:14 | function/C | foo | c:@N@rdar32474406@F@foo# | __ZN12rdar324744063fooEv | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | rdar32474406 | c:@N@rdar32474406 -Func_t[] = { foo }; // invalid decomposition -} diff --git a/test/Index/Core/index-source.cpp b/test/Index/Core/index-source.cpp deleted file mode 100644 index 0bf663e30be35..0000000000000 --- a/test/Index/Core/index-source.cpp +++ /dev/null @@ -1,562 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -std=c++1z -target x86_64-apple-macosx10.7 | FileCheck %s -// RUN: c-index-test core -print-source-symbols -include-locals -- %s -std=c++1z -target x86_64-apple-macosx10.7 | FileCheck -check-prefix=LOCAL %s - -// CHECK: [[@LINE+1]]:7 | class/C++ | Cls | [[Cls_USR:.*]] | <no-cgname> | Def | rel: 0 -class Cls { public: - // CHECK: [[@LINE+3]]:3 | constructor/C++ | Cls | c:@S@Cls@F@Cls#I# | __ZN3ClsC1Ei | Decl,RelChild | rel: 1 - // CHECK-NEXT: RelChild | Cls | c:@S@Cls - // CHECK: [[@LINE+1]]:3 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 - Cls(int x); - // CHECK: [[@LINE+2]]:3 | constructor/cxx-copy-ctor/C++ | Cls | c:@S@Cls@F@Cls#&1$@S@Cls# | __ZN3ClsC1ERKS_ | Decl,RelChild | rel: 1 - // CHECK: [[@LINE+1]]:3 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 - Cls(const Cls &); - // CHECK: [[@LINE+2]]:3 | constructor/cxx-move-ctor/C++ | Cls | c:@S@Cls@F@Cls#&&$@S@Cls# | __ZN3ClsC1EOS_ | Decl,RelChild | rel: 1 - // CHECK: [[@LINE+1]]:3 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 - Cls(Cls &&); - - // CHECK: [[@LINE+2]]:3 | destructor/C++ | ~Cls | c:@S@Cls@F@~Cls# | __ZN3ClsD1Ev | Decl,RelChild | rel: 1 - // CHECK: [[@LINE+1]]:4 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 - ~Cls(); -}; - -// CHECK: [[@LINE+3]]:7 | class/C++ | SubCls1 | [[SubCls1_USR:.*]] | <no-cgname> | Def | rel: 0 -// CHECK: [[@LINE+2]]:24 | class/C++ | Cls | [[Cls_USR]] | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | SubCls1 | [[SubCls1_USR]] -class SubCls1 : public Cls {}; -// CHECK: [[@LINE+1]]:13 | type-alias/C | ClsAlias | [[ClsAlias_USR:.*]] | <no-cgname> | Def | rel: 0 -typedef Cls ClsAlias; -// CHECK: [[@LINE+5]]:7 | class/C++ | SubCls2 | [[SubCls2_USR:.*]] | <no-cgname> | Def | rel: 0 -// CHECK: [[@LINE+4]]:24 | type-alias/C | ClsAlias | [[ClsAlias_USR]] | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | SubCls2 | [[SubCls2_USR]] -// CHECK: [[@LINE+2]]:24 | class/C++ | Cls | [[Cls_USR]] | <no-cgname> | Ref,Impl,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | SubCls2 | [[SubCls2_USR]] -class SubCls2 : public ClsAlias {}; - -Cls::Cls(int x) {} -// CHECK: [[@LINE-1]]:6 | constructor/C++ | Cls | c:@S@Cls@F@Cls#I# | __ZN3ClsC1Ei | Def,RelChild | rel: 1 -// CHECK: [[@LINE-2]]:1 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-3]]:6 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 - -Cls::~/*a comment*/Cls() {} -// CHECK: [[@LINE-1]]:6 | destructor/C++ | ~Cls | c:@S@Cls@F@~Cls# | __ZN3ClsD1Ev | Def,RelChild | rel: 1 -// CHECK: [[@LINE-2]]:1 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-3]]:20 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 - -template <typename TemplArg> -class TemplCls { -// CHECK: [[@LINE-1]]:7 | class(Gen)/C++ | TemplCls | c:@ST>1#T@TemplCls | <no-cgname> | Def | rel: 0 -public: - TemplCls(int x); - // CHECK: [[@LINE-1]]:3 | constructor/C++ | TemplCls | c:@ST>1#T@TemplCls@F@TemplCls#I# | <no-cgname> | Decl,RelChild | rel: 1 - // CHECK-NEXT: RelChild | TemplCls | c:@ST>1#T@TemplCls -}; - -template<> -class TemplCls<double> { -// CHECK: [[@LINE-1]]:7 | class(Gen,TS)/C++ | TemplCls | c:@S@TemplCls>#d | <no-cgname> | Def,RelSpecialization | rel: 1 -// CHECK: RelSpecialization | TemplCls | c:@ST>1#T@TemplCls -}; - -TemplCls<int> gtv(0); -// CHECK: [[@LINE-1]]:1 | class(Gen)/C++ | TemplCls | c:@ST>1#T@TemplCls | <no-cgname> | Ref,RelCont | rel: 1 - -template<class T> -class Wrapper {}; -template<class T, class P> -class Wrapper<T(P)> {}; - -// CHECK: [[@LINE+1]]:6 | function/C | test1 | [[TEST1_USR:.*]] | [[TEST1_CG:.*]] | Decl | rel: 0 -void test1(Wrapper<void(int)> f); -// CHECK: [[@LINE+1]]:6 | function/C | test1 | [[TEST1_USR]] | [[TEST1_CG]] | Def | rel: 0 -void test1(Wrapper<void(int)> f) {} - -template <typename T> -class BT { - struct KLR { - int idx; - }; - - // CHECK: [[@LINE+1]]:7 | instance-method/C++ | foo | - KLR foo() { - return { .idx = 0 }; // Make sure this doesn't trigger a crash. - } -}; - -// CHECK: [[@LINE+1]]:23 | type-alias/C | size_t | -typedef unsigned long size_t; -// CHECK: [[@LINE+2]]:7 | function/C | operator new | c:@F@operator new#l# | __Znwm | -// CHECK: [[@LINE+1]]:20 | type-alias/C | size_t | {{.*}} | Ref,RelCont | -void* operator new(size_t sz); - -// CHECK: [[@LINE+1]]:37 | variable(Gen)/C++ | tmplVar | c:index-source.cpp@VT>1#T@tmplVar | __ZL7tmplVar | Def | rel: 0 -template<typename T> static const T tmplVar = T(0); -// CHECK: [[@LINE+1]]:29 | variable(Gen,TS)/C++ | tmplVar | c:index-source.cpp@tmplVar>#I | __ZL7tmplVarIiE | Def | rel: 0 -template<> static const int tmplVar<int> = 0; -// CHECK: [[@LINE+2]]:5 | variable/C | gvi | c:@gvi | _gvi | Def | rel: 0 -// CHECK: [[@LINE+1]]:11 | variable(Gen,TS)/C++ | tmplVar | c:index-source.cpp@tmplVar>#I | __ZL7tmplVarIiE | Ref,Read,RelCont | rel: 1 -int gvi = tmplVar<int>; -// CHECK: [[@LINE+2]]:5 | variable/C | gvf | c:@gvf | _gvf | Def | rel: 0 -// CHECK: [[@LINE+1]]:11 | variable(Gen)/C++ | tmplVar | c:index-source.cpp@VT>1#T@tmplVar | __ZL7tmplVar | Ref,Read,RelCont | rel: 1 -int gvf = tmplVar<float>; - -template<typename A, typename B> -class PartialSpecilizationClass { }; -// CHECK: [[@LINE-1]]:7 | class(Gen)/C++ | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass | <no-cgname> | Def | rel: 0 - -template<typename B> -class PartialSpecilizationClass<int, B *> { }; -// CHECK: [[@LINE-1]]:7 | class(Gen,TPS)/C++ | PartialSpecilizationClass | c:@SP>1#T@PartialSpecilizationClass>#I#*t0.0 | <no-cgname> | Def,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass - -template<> -class PartialSpecilizationClass<int, int> { }; -// CHECK: [[@LINE-1]]:7 | class(Gen,TS)/C++ | PartialSpecilizationClass | c:@S@PartialSpecilizationClass>#I#I | <no-cgname> | Def,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass - -template<typename T, typename S> -class PseudoOverridesInSpecializations { - void function() { } - void function(int) { } - - static void staticFunction() { } - - int field; - static int variable; - - typedef T TypeDef; - using TypeAlias = T; - - enum anEnum { }; - - struct Struct { }; - union Union { }; - - using TypealiasOrRecord = void; - - template<typename U> struct InnerTemplate { }; - template<typename U> struct InnerTemplate <U*> { }; - - template<typename U> - class InnerClass { }; -}; - -template<> -class PseudoOverridesInSpecializations<double, int> { - void function() { } -// CHECK: [[@LINE-1]]:8 | instance-method/C++ | function | c:@S@PseudoOverridesInSpecializations>#d#I@F@function# | __ZN32PseudoOverridesInSpecializationsIdiE8functionEv | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | function | c:@ST>2#T#T@PseudoOverridesInSpecializations@F@function# - - void staticFunction() { } -// CHECK: [[@LINE-1]]:8 | instance-method/C++ | staticFunction | c:@S@PseudoOverridesInSpecializations>#d#I@F@staticFunction# | __ZN32PseudoOverridesInSpecializationsIdiE14staticFunctionEv | Def,RelChild | rel: 1 -// CHECK-NOT: RelSpecialization - - int notOverridingField = 0; - -// CHECK-LABEL: checLabelBreak - int checLabelBreak = 0; - - int field = 0; -// CHECK: [[@LINE-1]]:7 | field/C++ | field | c:@S@PseudoOverridesInSpecializations>#d#I@FI@field | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | field | c:@ST>2#T#T@PseudoOverridesInSpecializations@FI@field - - static double variable; -// CHECK: [[@LINE-1]]:17 | static-property/C++ | variable | c:@S@PseudoOverridesInSpecializations>#d#I@variable | __ZN32PseudoOverridesInSpecializationsIdiE8variableE | Decl,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | variable | c:@ST>2#T#T@PseudoOverridesInSpecializations@variable - - typedef double TypeDef; -// CHECK: [[@LINE-1]]:18 | type-alias/C | TypeDef | c:index-source.cpp@S@PseudoOverridesInSpecializations>#d#I@T@TypeDef | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | TypeDef | c:index-source.cpp@ST>2#T#T@PseudoOverridesInSpecializations@T@TypeDef - - using TypeAlias = int; -// CHECK: [[@LINE-1]]:9 | type-alias/C++ | TypeAlias | c:@S@PseudoOverridesInSpecializations>#d#I@TypeAlias | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | TypeAlias | c:@ST>2#T#T@PseudoOverridesInSpecializations@TypeAlias - - enum anEnum { }; -// CHECK: [[@LINE-1]]:8 | enum/C | anEnum | c:@S@PseudoOverridesInSpecializations>#d#I@E@anEnum | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | anEnum | c:@ST>2#T#T@PseudoOverridesInSpecializations@E@anEnum - class Struct { }; -// CHECK: [[@LINE-1]]:9 | class/C++ | Struct | c:@S@PseudoOverridesInSpecializations>#d#I@S@Struct | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | Struct | c:@ST>2#T#T@PseudoOverridesInSpecializations@S@Struct - union Union { }; -// CHECK: [[@LINE-1]]:9 | union/C | Union | c:@S@PseudoOverridesInSpecializations>#d#I@U@Union | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | Union | c:@ST>2#T#T@PseudoOverridesInSpecializations@U@Union - - struct TypealiasOrRecord { }; -// CHECK: [[@LINE-1]]:10 | struct/C | TypealiasOrRecord | c:@S@PseudoOverridesInSpecializations>#d#I@S@TypealiasOrRecord | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | TypealiasOrRecord | c:@ST>2#T#T@PseudoOverridesInSpecializations@TypealiasOrRecord - - template<typename U> struct InnerTemplate { }; -// CHECK: [[@LINE-1]]:31 | struct(Gen)/C++ | InnerTemplate | c:@S@PseudoOverridesInSpecializations>#d#I@ST>1#T@InnerTemplate | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | InnerTemplate | c:@ST>2#T#T@PseudoOverridesInSpecializations@ST>1#T@InnerTemplate - template<typename U> struct InnerTemplate <U*> { }; - - template<typename U> - class InnerClass; -// CHECK: [[@LINE-1]]:9 | class(Gen)/C++ | InnerClass | c:@S@PseudoOverridesInSpecializations>#d#I@ST>1#T@InnerClass | <no-cgname> | Decl,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | InnerClass | c:@ST>2#T#T@PseudoOverridesInSpecializations@ST>1#T@InnerClass -}; - -template<typename U> -class PseudoOverridesInSpecializations<double, int>::InnerClass { -}; -// CHECK: [[@LINE-2]]:54 | class(Gen)/C++ | InnerClass | c:@S@PseudoOverridesInSpecializations>#d#I@ST>1#T@InnerClass | <no-cgname> | Def,RelChild | rel: 1 -// CHECK-NEXT: RelChild -// CHECK: [[@LINE-4]]:7 | class(Gen)/C++ | PseudoOverridesInSpecializations | c:@ST>2#T#T@PseudoOverridesInSpecializations | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont - -template<typename S> -class PseudoOverridesInSpecializations<float, S> { - typedef float TypealiasOrRecord; -// CHECK: [[@LINE-1]]:17 | type-alias/C | TypealiasOrRecord | c:index-source.cpp@SP>1#T@PseudoOverridesInSpecializations>#f#t0.0@T@TypealiasOrRecord | <no-cgname> | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | TypealiasOrRecord | c:@ST>2#T#T@PseudoOverridesInSpecializations@TypealiasOrRecord -}; - -template<typename T, typename U> -class ConflictingPseudoOverridesInSpecialization { - void foo(T x); - void foo(U x); -}; - -template<typename T> -class ConflictingPseudoOverridesInSpecialization<int, T> { - void foo(T x); -// CHECK: [[@LINE-1]]:8 | instance-method/C++ | foo | c:@SP>1#T@ConflictingPseudoOverridesInSpecialization>#I#t0.0@F@foo#S0_# | <no-cgname> | Decl,RelChild,RelSpecialization | rel: 3 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | foo | c:@ST>2#T#T@ConflictingPseudoOverridesInSpecialization@F@foo#t0.0# -// CHECK-NEXT: RelSpecialization | foo | c:@ST>2#T#T@ConflictingPseudoOverridesInSpecialization@F@foo#t0.1# -}; - -template<typename T, typename U, int x> -void functionSpecialization(); - -template<typename T, typename U, int x> -void functionSpecialization() { } -// CHECK: [[@LINE-1]]:6 | function/C | functionSpecialization | c:@FT@>3#T#T#NIfunctionSpecialization#v# | <no-cgname> | Def | rel: 0 - -template<> -void functionSpecialization<int, int, 0>(); -// CHECK: [[@LINE-1]]:6 | function(Gen,TS)/C++ | functionSpecialization | c:@F@functionSpecialization<#I#I#VI0># | __Z22functionSpecializationIiiLi0EEvv | Decl,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | functionSpecialization | c:@FT@>3#T#T#NIfunctionSpecialization#v# - -template<> -void functionSpecialization<int, int, 0>() { } -// CHECK: [[@LINE-1]]:6 | function(Gen,TS)/C++ | functionSpecialization | c:@F@functionSpecialization<#I#I#VI0># | __Z22functionSpecializationIiiLi0EEvv | Def,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | functionSpecialization | c:@FT@>3#T#T#NIfunctionSpecialization#v# - -struct ContainsSpecializedMemberFunction { - template<typename T> - void memberSpecialization(); -}; - -template<typename T> -void ContainsSpecializedMemberFunction::memberSpecialization() { -// CHECK: [[@LINE-1]]:41 | instance-method/C++ | memberSpecialization | c:@S@ContainsSpecializedMemberFunction@FT@>1#TmemberSpecialization#v# | <no-cgname> | Def,RelChild | rel: 1 -// CHECK-NEXT: RelChild -} - -template<> -void ContainsSpecializedMemberFunction::memberSpecialization<int>() { -// CHECK: [[@LINE-1]]:41 | instance-method(Gen,TS)/C++ | memberSpecialization | c:@S@ContainsSpecializedMemberFunction@F@memberSpecialization<#I># | __ZN33ContainsSpecializedMemberFunction20memberSpecializationIiEEvv | Def,RelChild,RelSpecialization | rel: 2 -// CHECK-NEXT: RelChild -// CHECK-NEXT: RelSpecialization | memberSpecialization | c:@S@ContainsSpecializedMemberFunction@FT@>1#TmemberSpecialization#v# -} - -template<typename T> -class SpecializationDecl; -// CHECK: [[@LINE-1]]:7 | class(Gen)/C++ | SpecializationDecl | c:@ST>1#T@SpecializationDecl | <no-cgname> | Decl | rel: 0 - -template<typename T> -class SpecializationDecl { }; -// CHECK: [[@LINE-1]]:7 | class(Gen)/C++ | SpecializationDecl | c:@ST>1#T@SpecializationDecl | <no-cgname> | Def | rel: 0 - -template<> -class SpecializationDecl<int>; -// CHECK: [[@LINE-1]]:7 | class(Gen,TS)/C++ | SpecializationDecl | c:@S@SpecializationDecl>#I | <no-cgname> | Decl,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | SpecializationDecl | c:@ST>1#T@SpecializationDecl -// CHECK: [[@LINE-3]]:7 | class(Gen)/C++ | SpecializationDecl | c:@ST>1#T@SpecializationDecl | <no-cgname> | Ref | rel: 0 - -template<> -class SpecializationDecl<int> { }; -// CHECK: [[@LINE-1]]:7 | class(Gen,TS)/C++ | SpecializationDecl | c:@S@SpecializationDecl>#I | <no-cgname> | Def,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | SpecializationDecl | c:@ST>1#T@SpecializationDecl -// CHECK-NEXT: [[@LINE-3]]:7 | class(Gen)/C++ | SpecializationDecl | c:@ST>1#T@SpecializationDecl | <no-cgname> | Ref | rel: 0 - -template<typename T> -class PartialSpecilizationClass<Cls, T>; -// CHECK: [[@LINE-1]]:7 | class(Gen,TPS)/C++ | PartialSpecilizationClass | c:@SP>1#T@PartialSpecilizationClass>#$@S@Cls#t0.0 | <no-cgname> | Decl,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass -// CHECK: [[@LINE-3]]:7 | class(Gen)/C++ | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass | <no-cgname> | Ref | rel: 0 -// CHECK-NEXT: [[@LINE-4]]:33 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref | rel: 0 - -template<> -class PartialSpecilizationClass<Cls, Cls> : Cls { }; -// CHECK: [[@LINE-1]]:7 | class(Gen,TS)/C++ | PartialSpecilizationClass | c:@S@PartialSpecilizationClass>#$@S@Cls#S0_ | <no-cgname> | Def,RelSpecialization | rel: 1 -// CHECK-NEXT: RelSpecialization | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass -// CHECK-NEXT: [[@LINE-3]]:45 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | PartialSpecilizationClass | c:@S@PartialSpecilizationClass>#$@S@Cls#S0_ -// CHECK-NEXT: [[@LINE-5]]:7 | class(Gen)/C++ | PartialSpecilizationClass | c:@ST>2#T#T@PartialSpecilizationClass | <no-cgname> | Ref | rel: 0 -// CHECK-NEXT: [[@LINE-6]]:33 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref | rel: 0 -// CHECK-NEXT: [[@LINE-7]]:38 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref | rel: 0 - -template<typename T, int x> -void functionSp() { } - -struct Record { - constexpr static int C = 2; -}; - -template<> -void functionSp<SpecializationDecl<Cls>, Record::C>() { -// CHECK: [[@LINE-1]]:6 | function(Gen,TS)/C++ | functionSp | c:@F@functionSp<#$@S@SpecializationDecl>#$@S@Cls#VI2># | __Z10functionSpI18SpecializationDeclI3ClsELi2EEvv | Def,RelSpecialization | rel: 1 -// CHECK: RelSpecialization | functionSp | c:@FT@>2#T#NIfunctionSp#v# -// CHECK: [[@LINE-3]]:17 | class(Gen)/C++ | SpecializationDecl | c:@ST>1#T@SpecializationDecl | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-4]]:36 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-5]]:50 | static-property/C++ | C | c:@S@Record@C | __ZN6Record1CE | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-6]]:42 | struct/C++ | Record | c:@S@Record | <no-cgname> | Ref,RelCont | rel: 1 -} - -template<typename T, int x> -class ClassWithCorrectSpecialization { }; - -template<> -class ClassWithCorrectSpecialization<SpecializationDecl<Cls>, Record::C> { }; -// CHECK: [[@LINE-1]]:38 | class(Gen)/C++ | SpecializationDecl | c:@ST>1#T@SpecializationDecl | <no-cgname> | Ref | rel: 0 -// CHECK: [[@LINE-2]]:57 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref | rel: 0 -// CHECK: [[@LINE-3]]:71 | static-property/C++ | C | c:@S@Record@C | __ZN6Record1CE | Ref,Read | rel: 0 -// CHECK: [[@LINE-4]]:63 | struct/C++ | Record | c:@S@Record | <no-cgname> | Ref | rel: 0 - -namespace ns { -// CHECK: [[@LINE-1]]:11 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Decl | rel: 0 -namespace inner { -// CHECK: [[@LINE-1]]:11 | namespace/C++ | inner | c:@N@ns@N@inner | <no-cgname> | Decl,RelChild | rel: 1 -void func(); - -} -namespace innerAlias = inner; -// CHECK: [[@LINE-1]]:11 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK: [[@LINE-2]]:24 | namespace/C++ | inner | c:@N@ns@N@inner | <no-cgname> | Ref,RelCont | rel: 1 -} - -namespace namespaceAlias = ::ns::innerAlias; -// CHECK: [[@LINE-1]]:11 | namespace-alias/C++ | namespaceAlias | c:@NA@namespaceAlias | <no-cgname> | Decl | rel: 0 -// CHECK: [[@LINE-2]]:30 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-3]]:34 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | <no-cgname> | Ref,RelCont | rel: 1 - -void ::ns::inner::func() { -// CHECK: [[@LINE-1]]:8 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:12 | namespace/C++ | inner | c:@N@ns@N@inner | <no-cgname> | Ref,RelCont | rel: 1 - ns::innerAlias::func(); -// CHECK: [[@LINE-1]]:3 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:7 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | <no-cgname> | Ref,RelCont | rel: 1 -} - -void innerUsingNamespace() { - using namespace ns; -// CHECK: [[@LINE-1]]:19 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 - { - using namespace ns::innerAlias; -// CHECK: [[@LINE-1]]:25 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:21 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NOT: [[@LINE-3]]:21 - } -} - -void indexDefaultValueInDefn(Cls cls = Cls(gvi), Record param = Record()) { -// CHECK: [[@LINE-1]]:40 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:44 | variable/C | gvi | c:@gvi | _gvi | Ref,Read,RelCont | rel: 1 -// CHECK-NOT: [[@LINE-3]]:44 -// CHECK: [[@LINE-4]]:65 | struct/C++ | Record | c:@S@Record | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NOT: [[@LINE-5]]:65 -} - -template<template <typename> class T> -struct IndexDefaultValue { - IndexDefaultValue(int k = Record::C) { -// CHECK: [[@LINE-1]]:38 | static-property/C++ | C | c:@S@Record@C | __ZN6Record1CE | Ref,Read,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:30 | struct/C++ | Record | c:@S@Record | <no-cgname> | Ref,RelCont | rel: 1 - } -}; - -struct DeletedMethods { - DeletedMethods(const DeletedMethods &) = delete; -// CHECK: [[@LINE-1]]:3 | constructor/cxx-copy-ctor/C++ | DeletedMethods | c:@S@DeletedMethods@F@DeletedMethods#&1$@S@DeletedMethods# | __ZN14DeletedMethodsC1ERKS_ | Def,RelChild | rel: 1 -// CHECK: RelChild | DeletedMethods | c:@S@DeletedMethods -// CHECK: [[@LINE-3]]:24 | struct/C++ | DeletedMethods | c:@S@DeletedMethods | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-4]]:3 | struct/C++ | DeletedMethods | c:@S@DeletedMethods | <no-cgname> | Ref,RelCont | rel: 1 -}; - -namespace ns2 { -template<typename T> struct ACollectionDecl { }; -} - -template<typename T = Cls, -// CHECK: [[@LINE-1]]:23 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | TemplateDefaultValues | c:@ST>3#T#NI#t>1#T@TemplateDefaultValues - int x = Record::C, -// CHECK: [[@LINE-1]]:26 | static-property/C++ | C | c:@S@Record@C | __ZN6Record1CE | Ref,Read,RelCont | rel: 1 -// CHECK-NEXT: RelCont | TemplateDefaultValues | c:@ST>3#T#NI#t>1#T@TemplateDefaultValues -// CHECK: [[@LINE-3]]:18 | struct/C++ | Record | c:@S@Record | <no-cgname> | Ref,RelCont | rel: 1 - template <typename> class Collection = ns2::ACollectionDecl> -// CHECK: [[@LINE-1]]:49 | namespace/C++ | ns2 | c:@N@ns2 | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | TemplateDefaultValues | c:@ST>3#T#NI#t>1#T@TemplateDefaultValues -// CHECK: [[@LINE-3]]:54 | struct(Gen)/C++ | ACollectionDecl | c:@N@ns2@ST>1#T@ACollectionDecl | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | TemplateDefaultValues | c:@ST>3#T#NI#t>1#T@TemplateDefaultValues -struct TemplateDefaultValues { }; - -template<typename T = Record, -// CHECK: [[@LINE-1]]:23 | struct/C++ | Record | c:@S@Record | <no-cgname> | Ref,RelCont | rel: 1 - int x = sizeof(Cls)> -// CHECK: [[@LINE-1]]:25 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -void functionTemplateDefaultValues() { } - -namespace ensureDefaultTemplateParamsAreRecordedOnce { - -template<typename T = Cls> -// CHECK: [[@LINE-1]]:23 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NOT: [[@LINE-2]]:23 -void functionDecl(); - -template<typename T> -void functionDecl() { } - -template<typename T = Cls> -// CHECK: [[@LINE-1]]:23 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NOT: [[@LINE-2]]:23 -class TagDecl; - -template<typename T> -class TagDecl; - -template<typename T> -class TagDecl { }; - -template<typename T = Cls> -// CHECK: [[@LINE-1]]:23 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -using TypeAlias = TagDecl<T>; - -template<typename T = Cls> -// CHECK: [[@LINE-1]]:23 | class/C++ | Cls | c:@S@Cls | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NOT: [[@LINE-2]]:23 -extern T varDecl; - -template<typename T> -T varDecl = T(); - -} // end namespace ensureDefaultTemplateParamsAreRecordedOnce - -struct StaticAssertRef { - static constexpr bool constVar = true; -}; - -static_assert(StaticAssertRef::constVar, "index static asserts"); -// CHECK: [[@LINE-1]]:32 | static-property/C++ | constVar | c:@S@StaticAssertRef@constVar | __ZN15StaticAssertRef8constVarE | Ref | rel: 0 -// CHECK: [[@LINE-2]]:15 | struct/C++ | StaticAssertRef | c:@S@StaticAssertRef | <no-cgname> | Ref | rel: 0 - -void staticAssertInFn() { - static_assert(StaticAssertRef::constVar, "index static asserts"); -// CHECK: [[@LINE-1]]:34 | static-property/C++ | constVar | c:@S@StaticAssertRef@constVar | __ZN15StaticAssertRef8constVarE | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | staticAssertInFn | c:@F@staticAssertInFn# -// CHECK: [[@LINE-3]]:17 | struct/C++ | StaticAssertRef | c:@S@StaticAssertRef | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | staticAssertInFn | c:@F@staticAssertInFn# -} - -namespace cpp17structuredBinding { - -struct Cpp17StructuredBinding { - int x, y; - - Cpp17StructuredBinding(int x, int y): x(x), y(y) { } -}; - -auto [structuredBinding1, structuredBinding2] = Cpp17StructuredBinding(Record::C, 0); -// CHECK: [[@LINE-1]]:7 | variable/C++ | structuredBinding1 | c:@N@cpp17structuredBinding@structuredBinding1 | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | cpp17structuredBinding | c:@N@cpp17structuredBinding -// CHECK: [[@LINE-3]]:27 | variable/C++ | structuredBinding2 | c:@N@cpp17structuredBinding@structuredBinding2 | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | cpp17structuredBinding | c:@N@cpp17structuredBinding - -void localStructuredBindingAndRef() { - int ref = structuredBinding1; -// CHECK: [[@LINE-1]]:13 | variable/C++ | structuredBinding1 | c:@N@cpp17structuredBinding@structuredBinding1 | <no-cgname> | Ref,Read,RelCont | rel: 1 -// CHECK-NEXT: RelCont | localStructuredBindingAndRef | c:@N@cpp17structuredBinding@F@localStructuredBindingAndRef# - auto [localBinding1, localBinding2] = Cpp17StructuredBinding(ref, structuredBinding2); -// CHECK: [[@LINE-1]]:69 | variable/C++ | structuredBinding2 | c:@N@cpp17structuredBinding@structuredBinding2 | <no-cgname> | Ref,Read,RelCont | rel: 1 -// CHECK-NEXT: RelCont | localStructuredBindingAndRef | c:@N@cpp17structuredBinding@F@localStructuredBindingAndRef# -// CHECK-NOT: localBinding -// LOCAL: [[@LINE-4]]:9 | variable(local)/C++ | localBinding1 | c:index-source.cpp@25382@N@cpp17structuredBinding@F@localStructuredBindingAndRef#@localBinding1 -} - -} - -template<typename T> -struct Guided { T t; }; -// CHECK: [[@LINE-1]]:8 | struct(Gen)/C++ | Guided | c:@ST>1#T@Guided | <no-cgname> | Def | rel: 0 -// CHECK-NEXT: [[@LINE-2]]:19 | field/C++ | t | c:@ST>1#T@Guided@FI@t | <no-cgname> | Def,RelChild | rel: 1 -// CHECK-NEXT: RelChild | Guided | c:@ST>1#T@Guided -Guided(double) -> Guided<float>; -// CHECK: [[@LINE-1]]:19 | struct(Gen)/C++ | Guided | c:@ST>1#T@Guided | <no-cgname> | Ref | rel: 0 -// CHECK-NEXT: [[@LINE-2]]:1 | struct(Gen)/C++ | Guided | c:@ST>1#T@Guided | <no-cgname> | Ref | rel: 0 -auto guided = Guided{1.0}; -// CHECK: [[@LINE-1]]:6 | variable/C | guided | c:@guided | _guided | Def | rel: 0 -// CHECK-NEXT: [[@LINE-2]]:15 | struct(Gen)/C++ | Guided | c:@ST>1#T@Guided | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | guided | c:@guided - -namespace rd33122110 { - -struct Outer { - template<typename T> - struct Nested { }; -}; - -} - -template<> -struct rd33122110::Outer::Nested<int>; -// CHECK: [[@LINE-1]]:8 | namespace/C++ | rd33122110 | c:@N@rd33122110 | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | Nested | c:@N@rd33122110@S@Outer@S@Nested>#I -// CHECK: [[@LINE-3]]:20 | struct/C++ | Outer | c:@N@rd33122110@S@Outer | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | Nested | c:@N@rd33122110@S@Outer@S@Nested>#I - -namespace index_offsetof { - -struct Struct { - int field; -}; - -struct Struct2 { - Struct array[4][2]; -}; - -void foo() { - __builtin_offsetof(Struct, field); -// CHECK: [[@LINE-1]]:30 | field/C | field | c:@N@index_offsetof@S@Struct@FI@field | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@F@foo# - __builtin_offsetof(Struct2, array[1][0].field); -// CHECK: [[@LINE-1]]:31 | field/C | array | c:@N@index_offsetof@S@Struct2@FI@array | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@F@foo# -// CHECK: [[@LINE-3]]:43 | field/C | field | c:@N@index_offsetof@S@Struct@FI@field | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@F@foo# -} - -#define OFFSET_OF_(X, Y) __builtin_offsetof(X, Y) - -class SubclassOffsetof : public Struct { - void foo() { - OFFSET_OF_(SubclassOffsetof, field); -// CHECK: [[@LINE-1]]:34 | field/C | field | c:@N@index_offsetof@S@Struct@FI@field | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@S@SubclassOffsetof@F@foo# - } -}; - -} diff --git a/test/Index/Core/index-source.m b/test/Index/Core/index-source.m deleted file mode 100644 index ed616dbc9ae6e..0000000000000 --- a/test/Index/Core/index-source.m +++ /dev/null @@ -1,492 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -target x86_64-apple-macosx10.7 | FileCheck %s -// RUN: c-index-test core -print-source-symbols -include-locals -- %s -target x86_64-apple-macosx10.7 | FileCheck -check-prefix=LOCAL %s - -@interface Base -// CHECK: [[@LINE-1]]:12 | class/ObjC | Base | [[BASE_USR:.*]] | _OBJC_CLASS_$_Base | Decl | rel: 0 --(void)meth; -// 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]]: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 - -@end - -void foo(); -// CHECK: [[@LINE+6]]:6 | function/C | goo | c:@F@goo | _goo | Def | rel: 0 -// CHECK: [[@LINE+5]]:10 | class/ObjC | Base | c:objc(cs)Base | _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | goo | c:@F@goo -// CHECK-NOT: [[@LINE+3]]:16 | param -// LOCAL: [[@LINE+2]]:16 | param(local)/C | b | [[b_USR:c:.*]] | _b | Def,RelChild | rel: 1 -// LOCAL-NEXT: RelChild | goo | c:@F@goo -void goo(Base *b) { - // CHECK-NOT: [[@LINE+6]]:7 | variable - // LOCAL: [[@LINE+5]]:7 | variable(local)/C | x | [[x_USR:c:.*]] | _x | Def,RelCont | rel: 1 - // LOCAL-NEXT: RelCont | goo | c:@F@goo - // CHECK-NOT: [[@LINE+3]]:11 | param - // LOCAL: [[@LINE+2]]:11 | param(local)/C | b | [[b_USR]] | _b | Ref,Read,RelCont | rel: 1 - // LOCAL-NEXT: RelCont | x | [[x_USR]] - int x = b; - // CHECK-NOT: [[@LINE+5]]:7 | variable - // LOCAL: [[@LINE+4]]:7 | variable(local)/C | y | [[y_USR:c:.*]] | _y | Def,RelCont | rel: 1 - // CHECK-NOT: [[@LINE+3]]:11 | variable - // LOCAL: [[@LINE+2]]:11 | variable(local)/C | x | [[x_USR]] | _x | Ref,Read,RelCont | rel: 1 - // LOCAL-NEXT: RelCont | y | [[y_USR]] - int y = x; - - // CHECK-NOT: [[@LINE+1]]:10 | struct - // LOCAL: [[@LINE+1]]:10 | struct(local)/C | Foo | c:{{.*}} | <no-cgname> | Def,RelCont | rel: 1 - struct Foo { - int i; - }; - - // CHECK: [[@LINE+2]]:3 | function/C | foo | c:@F@foo | _foo | Ref,Call,RelCall,RelCont | rel: 1 - // CHECK-NEXT: RelCall,RelCont | goo | c:@F@goo - foo(); - // CHECK: [[@LINE+3]]:6 | instance-method/ObjC | meth | c:objc(cs)Base(im)meth | -[Base meth] | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 2 - // CHECK-NEXT: RelCall,RelCont | goo | c:@F@goo - // CHECK-NEXT: RelRec | Base | c:objc(cs)Base - [b meth]; - - // CHECK: [[@LINE+2]]:4 | class/ObjC | Base | c:objc(cs)Base | _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1 - // CHECK-NEXT: RelCont | goo | c:@F@goo - [Base class_meth]; - - // CHECK: [[@LINE+4]]:3 | class/ObjC | Base | c:objc(cs)Base | _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1 - // CHECK-NEXT: RelCont | goo | c:@F@goo - // CHECK: [[@LINE+2]]:14 | class/ObjC | Base | c:objc(cs)Base | _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1 - // CHECK-NEXT: RelCont | goo | c:@F@goo - Base *f = (Base *) 2; -} - -// CHECK: [[@LINE+1]]:11 | protocol/ObjC | Prot1 | [[PROT1_USR:.*]] | <no-cgname> | Decl | rel: 0 -@protocol Prot1 -@end - -// CHECK: [[@LINE+3]]:11 | protocol/ObjC | Prot2 | c:objc(pl)Prot2 | <no-cgname> | Decl | rel: 0 -// CHECK: [[@LINE+2]]:17 | protocol/ObjC | Prot1 | c:objc(pl)Prot1 | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Prot2 | c:objc(pl)Prot2 -@protocol Prot2<Prot1> -@end - -// CHECK: [[@LINE+7]]:12 | class/ObjC | Sub | c:objc(cs)Sub | _OBJC_CLASS_$_Sub | Decl | rel: 0 -// CHECK: [[@LINE+6]]:18 | class/ObjC | Base | c:objc(cs)Base | _OBJC_CLASS_$_Base | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Sub | c:objc(cs)Sub -// CHECK: [[@LINE+4]]:23 | protocol/ObjC | Prot2 | c:objc(pl)Prot2 | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Sub | c:objc(cs)Sub -// CHECK: [[@LINE+2]]:30 | protocol/ObjC | Prot1 | c:objc(pl)Prot1 | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | Sub | c:objc(cs)Sub -@interface Sub : Base<Prot2, Prot1> -@end - -@interface NSArray<ObjectType> : Base -// CHECK-NOT: ObjectType --(ObjectType)getit; -@end - -// CHECK: [[@LINE+1]]:6 | function/C | over_func | c:@F@over_func#I# | __Z9over_funci | Decl | rel: 0 -void over_func(int x) __attribute__((overloadable)); -// CHECK: [[@LINE+1]]:6 | function/C | over_func | c:@F@over_func#f# | __Z9over_funcf | Decl | rel: 0 -void over_func(float x) __attribute__((overloadable)); - -// CHECK: [[@LINE+1]]:6 | enum/C | MyEnum | c:@E@MyEnum | <no-cgname> | Def | rel: 0 -enum MyEnum { - // CHECK: [[@LINE+2]]:3 | enumerator/C | EnumeratorInNamed | c:@E@MyEnum@EnumeratorInNamed | <no-cgname> | Def,RelChild | rel: 1 - // CHECK-NEXT: RelChild | MyEnum | c:@E@MyEnum - EnumeratorInNamed -}; - -// CHECK: [[@LINE+1]]:1 | enum/C | <no-name> | c:@Ea@One | <no-cgname> | Def | rel: 0 -enum { - // CHECK: [[@LINE+2]]:3 | enumerator/C | One | c:@Ea@One@One | <no-cgname> | Def,RelChild | rel: 1 - // CHECK-NEXT: RelChild | <no-name> | c:@Ea@One - One, - // CHECK: [[@LINE+2]]:3 | enumerator/C | Two | c:@Ea@One@Two | <no-cgname> | Def,RelChild | rel: 1 - // CHECK-NEXT: RelChild | <no-name> | c:@Ea@One - Two, -}; - -// CHECK: [[@LINE+1]]:13 | type-alias/C | jmp_buf | c:index-source.m@T@jmp_buf | <no-cgname> | Def | rel: 0 -typedef int jmp_buf[(18)]; -// CHECK: [[@LINE+3]]:12 | function/C | setjmp | c:@F@setjmp | _setjmp | Decl | rel: 0 -// CHECK: [[@LINE+2]]:19 | type-alias/C | jmp_buf | c:index-source.m@T@jmp_buf | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | setjmp | c:@F@setjmp -extern int setjmp(jmp_buf); - -@class I1; -@interface I1 -// CHECK: [[@LINE+1]]:8 | instance-method/ObjC | meth | c:objc(cs)I1(im)meth | -[I1 meth] | Decl,Dyn,RelChild | rel: 1 --(void)meth; -@end - -@interface I2 -// CHECK: [[@LINE-1]]:12 | class/ObjC | I2 | [[I2_USR:.*]] | {{.*}} | Decl | rel: 0 - -@property (readwrite) id prop; -// CHECK: [[@LINE-1]]:26 | instance-method/acc-get/ObjC | prop | [[I2_prop_getter_USR:.*]] | -[I2 prop] | Decl,Dyn,Impl,RelChild,RelAcc | rel: 2 -// CHECK: [[@LINE-2]]:26 | instance-method/acc-set/ObjC | setProp: | [[I2_prop_setter_USR:.*]] | -[I2 setProp:] | Decl,Dyn,Impl,RelChild,RelAcc | rel: 2 -// CHECK: [[@LINE-3]]:26 | instance-property/ObjC | prop | [[I2_prop_USR:.*]] | <no-cgname> | Decl,RelChild | rel: 1 - -@property (readwrite, getter=customGet, setter=customSet:) id unrelated; -// CHECK: [[@LINE-1]]:30 | instance-method/acc-get/ObjC | customGet | {{.*}} | -[I2 customGet] | Decl,Dyn,RelChild,RelAcc | rel: 2 -// CHECK: [[@LINE-2]]:48 | instance-method/acc-set/ObjC | customSet: | {{.*}} | -[I2 customSet:] | Decl,Dyn,RelChild,RelAcc | rel: 2 -// CHECK: [[@LINE-3]]:63 | instance-property/ObjC | unrelated | {{.*}} | <no-cgname> | Decl,RelChild | rel: 1 - --(id)declaredGet; -@property (readwrite, getter=declaredGet) id otherProp; -// CHECK: [[@LINE-1]]:30 | instance-method/acc-get/ObjC | declaredGet | {{.*}} | -[I2 declaredGet] | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-3]]:6 | instance-method/acc-get/ObjC | declaredGet | {{.*}} | -[I2 declaredGet] | Decl,Dyn,RelChild,RelAcc | rel: 2 -// CHECK: [[@LINE-3]]:46 | instance-method/acc-set/ObjC | setOtherProp: | {{.*}} | -[I2 setOtherProp:] | Decl,Dyn,Impl,RelChild,RelAcc | rel: 2 - -// CHECK: [[@LINE+4]]:63 | instance-property(IB,IBColl)/ObjC | buttons | [[buttons_USR:.*]] | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I2 | [[I2_USR]] -// CHECK: [[@LINE+2]]:50 | class/ObjC | I1 | c:objc(cs)I1 | _OBJC_CLASS_$_I1 | Ref,RelCont,RelIBType | rel: 1 -// CHECK-NEXT: RelCont,RelIBType | buttons | [[buttons_USR]] -@property (nonatomic, strong) IBOutletCollection(I1) NSArray *buttons; -@end - -@implementation I2 -// CHECK: [[@LINE+9]]:13 | instance-property/ObjC | prop | [[I2_prop_USR:.*]] | <no-cgname> | Def,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | I2 | [[I2_USR]] -// CHECK-NEXT: RelAcc | _prop | c:objc(cs)I2@_prop -// CHECK: [[@LINE+6]]:13 | instance-method/acc-get/ObjC | prop | [[I2_prop_getter_USR]] | -[I2 prop] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I2 | [[I2_USR]] -// CHECK: [[@LINE+4]]:13 | instance-method/acc-set/ObjC | setProp: | [[I2_prop_setter_USR]] | -[I2 setProp:] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I2 | [[I2_USR]] -// CHECK: [[@LINE+2]]:20 | field/ObjC | _prop | c:objc(cs)I2@_prop | <no-cgname> | Def,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I2 | [[I2_USR]] -@synthesize prop = _prop; - -// CHECK: [[@LINE+11]]:12 | instance-method(IB)/ObjC | doAction:foo: | [[doAction_USR:.*]] | -[I2 doAction:foo:] | Def,Dyn,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I2 | [[I2_USR]] -// CHECK: [[@LINE+9]]:22 | class/ObjC | I1 | c:objc(cs)I1 | _OBJC_CLASS_$_I1 | Ref,RelCont,RelIBType | rel: 1 -// CHECK-NEXT: RelCont,RelIBType | doAction:foo: | [[doAction_USR]] -// CHECK-NOT: [[@LINE+7]]:27 | param -// LOCAL: [[@LINE+6]]:27 | param(local)/C | sender | c:{{.*}} | _sender | Def,RelChild | rel: 1 -// LOCAL-NEXT: RelChild | doAction:foo: | [[doAction_USR:.*]] -// CHECK: [[@LINE+4]]:39 | class/ObjC | I1 | c:objc(cs)I1 | _OBJC_CLASS_$_I1 | Ref,RelCont | rel: 1 -// CHECK-NOT: [[@LINE+3]]:44 | param -// LOCAL: [[@LINE+2]]:44 | param(local)/C | bar | c:{{.*}} | _bar | Def,RelChild | rel: 1 -// LOCAL-NEXT: RelChild | doAction:foo: | [[doAction_USR]] --(IBAction)doAction:(I1 *)sender foo:(I1 *)bar { - [self prop]; - // CHECK: [[@LINE-1]]:9 | instance-method/acc-get/ObjC | prop | [[I2_prop_getter_USR]] | -[I2 prop] | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 2 - // CHECK-NEXT: RelCall,RelCont | doAction:foo: | [[doAction_USR]] - // CHECK-NEXT: RelRec | I2 | [[I2_USR]] - - [self setProp: bar]; - // CHECK: [[@LINE-1]]:9 | instance-method/acc-set/ObjC | setProp: | [[I2_prop_setter_USR]] | -[I2 setProp:] | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 2 - // CHECK-NEXT: RelCall,RelCont | doAction:foo: | [[doAction_USR]] - // CHECK-NEXT: RelRec | I2 | [[I2_USR]] - - self.prop; - // CHECK: [[@LINE-1]]:8 | instance-property/ObjC | prop | [[I2_prop_USR]] | <no-cgname> | Ref,RelCont | rel: 1 - // CHECK-NEXT: RelCont | doAction:foo: | [[doAction_USR]] - // CHECK: [[@LINE-3]]:8 | instance-method/acc-get/ObjC | prop | [[I2_prop_getter_USR]] | -[I2 prop] | Ref,Call,Dyn,Impl,RelRec,RelCall,RelCont | rel: 2 - // CHECK-NEXT: RelCall,RelCont | doAction:foo: | [[doAction_USR]] - // CHECK-NEXT: RelRec | I2 | [[I2_USR]] - - self.prop = self.prop; - // CHECK: [[@LINE-1]]:8 | instance-property/ObjC | prop | [[I2_prop_USR]] | <no-cgname> | Ref,Writ,RelCont | rel: 1 - // CHECK-NEXT: RelCont | doAction:foo: | [[doAction_USR]] - // CHECK:[[@LINE-3]]:8 | instance-method/acc-set/ObjC | setProp: | [[I2_prop_setter_USR]] | -[I2 setProp:] | Ref,Call,Dyn,Impl,RelRec,RelCall,RelCont | rel: 2 - // CHECK-NEXT: RelCall,RelCont | doAction:foo: | [[doAction_USR]] - // CHECK-NEXT: RelRec | I2 | [[I2_USR]] -} -@end - -@interface I3 -@property (readwrite) id prop; -// 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+4]]: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 -// LOCAL-NOT: [[@LINE+1]]:20 | param --(void)setProp:(id)p; -@end - -// CHECK: [[@LINE+1]]:17 | class/ObjC | I3 | c:objc(cs)I3 | <no-cgname> | Def | rel: 0 -@implementation I3 -// CHECK: [[@LINE+5]]:13 | instance-property/ObjC | prop | c:objc(cs)I3(py)prop | <no-cgname> | Def,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | I3 | c:objc(cs)I3 -// CHECK-NEXT: RelAcc | _prop | c:objc(cs)I3@_prop -// CHECK: [[@LINE+2]]:13 | instance-method/acc-get/ObjC | prop | c:objc(cs)I3(im)prop | -[I3 prop] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK: [[@LINE+1]]:13 | instance-method/acc-set/ObjC | setProp: | c:objc(cs)I3(im)setProp: | -[I3 setProp:] | Def,Dyn,Impl,RelChild | rel: 1 -@synthesize prop = _prop; -@end - -// CHECK: [[@LINE+5]]:12 | class/ObjC | I3 | c:objc(cs)I3 | _OBJC_CLASS_$_I3 | Ref,RelExt,RelCont | rel: 1 -// CHECK-NEXT: RelExt,RelCont | bar | c:objc(cy)I3@bar -// CHECK: [[@LINE+3]]:15 | extension/ObjC | bar | c:objc(cy)I3@bar | <no-cgname> | Decl | rel: 0 -// CHECK: [[@LINE+2]]:21 | protocol/ObjC | Prot1 | c:objc(pl)Prot1 | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | bar | c:objc(cy)I3@bar -@interface I3(bar) <Prot1> -@end - -// CHECK: [[@LINE+2]]:17 | class/ObjC | I3 | c:objc(cs)I3 | _OBJC_CLASS_$_I3 | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:20 | extension/ObjC | bar | c:objc(cy)I3@bar | <no-cgname> | Def | rel: 0 -@implementation I3(bar) -@end - -// CHECK-NOT: [[@LINE+1]]:12 | extension/ObjC | -@interface NonExistent() -@end - -@interface MyGenCls<ObjectType> : Base -@end - -@protocol MyEnumerating -@end - -// CHECK: [[@LINE+4]]:41 | type-alias/C | MyEnumerator | [[MyEnumerator_USR:.*]] | <no-cgname> | Def | rel: 0 -// CHECK: [[@LINE+3]]:26 | protocol/ObjC | MyEnumerating | c:objc(pl)MyEnumerating | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+2]]:9 | class/ObjC | MyGenCls | c:objc(cs)MyGenCls | _OBJC_CLASS_$_MyGenCls | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:18 | class/ObjC | Base | c:objc(cs)Base | _OBJC_CLASS_$_Base | Ref,RelCont | rel: 1 -typedef MyGenCls<Base *><MyEnumerating> MyEnumerator; - -// CHECK: [[@LINE+7]]:12 | class/ObjC | PermanentEnumerator | [[PermanentEnumerator_USR:.*]] | _OBJC_CLASS_$_PermanentEnumerator | Decl | rel: 0 -// CHECK: [[@LINE+6]]:34 | type-alias/C | MyEnumerator | [[MyEnumerator_USR]] | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | PermanentEnumerator | [[PermanentEnumerator_USR]] -// CHECK: [[@LINE+4]]:34 | class/ObjC | MyGenCls | c:objc(cs)MyGenCls | _OBJC_CLASS_$_MyGenCls | Ref,Impl,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | PermanentEnumerator | [[PermanentEnumerator_USR]] -// CHECK: [[@LINE+2]]:34 | protocol/ObjC | MyEnumerating | c:objc(pl)MyEnumerating | <no-cgname> | Ref,Impl,RelBase,RelCont | rel: 1 -// CHECK-NEXT: RelBase,RelCont | PermanentEnumerator | [[PermanentEnumerator_USR]] -@interface PermanentEnumerator : MyEnumerator -@end - -// CHECK: [[@LINE+2]]:48 | protocol/ObjC | Prot1 | c:objc(pl)Prot1 | <no-cgname> | Ref,RelBase,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:35 | protocol/ObjC | MyEnumerating | c:objc(pl)MyEnumerating | <no-cgname> | Ref,Impl,RelBase,RelCont | rel: 1 -@interface PermanentEnumerator2 : MyEnumerator<Prot1> -@end - -@interface I4 -@property id foo; -@end - -@implementation I4 { - id _blahfoo; // explicit def - // CHECK: [[@LINE-1]]:6 | field/ObjC | _blahfoo | c:objc(cs)I4@_blahfoo | <no-cgname> | Def,RelChild | rel: 1 -} -@synthesize foo = _blahfoo; // ref of field _blahfoo -// CHECK: [[@LINE-1]]:13 | instance-property/ObjC | foo | c:objc(cs)I4(py)foo | <no-cgname> | Def,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | I4 | c:objc(cs)I4 -// CHECK-NEXT: RelAcc | _blahfoo | c:objc(cs)I4@_blahfoo -// CHECK: [[@LINE-4]]:13 | instance-method/acc-get/ObjC | foo | c:objc(cs)I4(im)foo | -[I4 foo] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I4 | c:objc(cs)I4 -// CHECK: [[@LINE-6]]:13 | instance-method/acc-set/ObjC | setFoo: | c:objc(cs)I4(im)setFoo: | -[I4 setFoo:] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I4 | c:objc(cs)I4 -// CHECK: [[@LINE-8]]:19 | field/ObjC | _blahfoo | c:objc(cs)I4@_blahfoo | <no-cgname> | Ref | rel: 0 - --(void)method { - _blahfoo = 0; - // CHECK: [[@LINE-1]]:3 | field/ObjC | _blahfoo | c:objc(cs)I4@_blahfoo | <no-cgname> | Ref,Writ,RelCont | rel: 1 -} -@end - -@interface I5 -@property id foo; -@end - -@implementation I5 -@synthesize foo = _blahfoo; // explicit def of field _blahfoo -// CHECK: [[@LINE-1]]:13 | instance-property/ObjC | foo | c:objc(cs)I5(py)foo | <no-cgname> | Def,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | I5 | c:objc(cs)I5 -// CHECK-NEXT: RelAcc | _blahfoo | c:objc(cs)I5@_blahfoo -// CHECK: [[@LINE-4]]:13 | instance-method/acc-get/ObjC | foo | c:objc(cs)I5(im)foo | -[I5 foo] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I5 | c:objc(cs)I5 -// CHECK: [[@LINE-6]]:13 | instance-method/acc-set/ObjC | setFoo: | c:objc(cs)I5(im)setFoo: | -[I5 setFoo:] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I5 | c:objc(cs)I5 -// CHECK: [[@LINE-8]]:19 | field/ObjC | _blahfoo | c:objc(cs)I5@_blahfoo | <no-cgname> | Def,RelChild | rel: 1 - --(void)method { - _blahfoo = 0; - // CHECK: [[@LINE-1]]:3 | field/ObjC | _blahfoo | c:objc(cs)I5@_blahfoo | <no-cgname> | Ref,Writ,RelCont | rel: 1 -} -@end - -@interface I6 -@property id foo; -@end - -@implementation I6 -@synthesize foo; // implicit def of field foo -// CHECK: [[@LINE-1]]:13 | instance-property/ObjC | foo | c:objc(cs)I6(py)foo | <no-cgname> | Def,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | I6 | c:objc(cs)I6 -// CHECK-NEXT: RelAcc | foo | c:objc(cs)I6@foo -// CHECK: [[@LINE-4]]:13 | instance-method/acc-get/ObjC | foo | c:objc(cs)I6(im)foo | -[I6 foo] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I6 | c:objc(cs)I6 -// CHECK: [[@LINE-6]]:13 | instance-method/acc-set/ObjC | setFoo: | c:objc(cs)I6(im)setFoo: | -[I6 setFoo:] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I6 | c:objc(cs)I6 -// CHECK: [[@LINE-8]]:13 | field/ObjC | foo | c:objc(cs)I6@foo | <no-cgname> | Def,Impl,RelChild | rel: 1 - --(void)method { - foo = 0; - // CHECK: [[@LINE-1]]:3 | field/ObjC | foo | c:objc(cs)I6@foo | <no-cgname> | Ref,Writ,RelCont | rel: 1 -} -@end - -@interface I7 -@property id foo; -@end - -@implementation I7 // implicit def of field _foo -// CHECK: [[@LINE-1]]:17 | instance-property/ObjC | foo | c:objc(cs)I7(py)foo | <no-cgname> | Def,Impl,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | I7 | c:objc(cs)I7 -// CHECK-NEXT: RelAcc | _foo | c:objc(cs)I7@_foo -// CHECK: [[@LINE-4]]:17 | instance-method/acc-get/ObjC | foo | c:objc(cs)I7(im)foo | -[I7 foo] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I7 | c:objc(cs)I7 -// CHECK: [[@LINE-6]]:17 | instance-method/acc-set/ObjC | setFoo: | c:objc(cs)I7(im)setFoo: | -[I7 setFoo:] | Def,Dyn,Impl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | I7 | c:objc(cs)I7 -// CHECK: [[@LINE-8]]:17 | field/ObjC | _foo | c:objc(cs)I7@_foo | <no-cgname> | Def,Impl,RelChild | rel: 1 - --(void)method { - _foo = 0; -// CHECK: [[@LINE-1]]:3 | field/ObjC | _foo | c:objc(cs)I7@_foo | <no-cgname> | Ref,Writ,RelCont | rel: 1 -} -@end - -#define NS_ENUM(_name, _type) enum _name:_type _name; enum _name : _type - -typedef NS_ENUM(AnotherEnum, int) { -// CHECK-NOT: [[@LINE-1]]:17 | type-alias/C | AnotherEnum | -// CHECK-NOT: [[@LINE-2]]:17 | {{.*}} | Ref -// CHECK: [[@LINE-3]]:17 | enum/C | AnotherEnum | [[AnotherEnum_USR:.*]] | {{.*}} | Def | rel: 0 - AnotherEnumFirst = 0, - AnotherEnumSecond = 1, - AnotherEnumThird = 2, -}; - -AnotherEnum anotherT; -// CHECK: [[@LINE-1]]:1 | enum/C | AnotherEnum | [[AnotherEnum_USR]] | {{.*}} | Ref,RelCont | rel: 1 -enum AnotherEnum anotherE; -// CHECK: [[@LINE-1]]:6 | enum/C | AnotherEnum | [[AnotherEnum_USR]] | {{.*}} | Ref,RelCont | rel: 1 - -#define TRANSPARENT(_name) struct _name _name; struct _name -#define OPAQUE(_name) struct _name *_name; struct _name - -typedef TRANSPARENT(AStruct) { - int x; -}; - -AStruct aStructT; -// CHECK: [[@LINE-1]]:1 | struct/C | AStruct | {{.*}} | {{.*}} | Ref,RelCont | rel: 1 -struct AStruct aStructS; -// CHECK: [[@LINE-1]]:8 | struct/C | AStruct | {{.*}} | {{.*}} | Ref,RelCont | rel: 1 - -typedef OPAQUE(Separate) { - int x; -}; - -Separate separateT; -// CHECK: [[@LINE-1]]:1 | type-alias/C | Separate | {{.*}} | {{.*}} | Ref,RelCont | rel: 1 -struct Separate separateE; -// CHECK: [[@LINE-1]]:8 | struct/C | Separate | {{.*}} | {{.*}} | Ref,RelCont | rel: 1 - -@interface ClassReceivers - -@property(class) int p1; -// CHECK: [[@LINE-1]]:22 | class-method/acc-get/ObjC | p1 | c:objc(cs)ClassReceivers(cm)p1 | +[ClassReceivers p1] | Decl,Dyn,Impl,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | ClassReceivers | c:objc(cs)ClassReceivers -// CHECK-NEXT: RelAcc | p1 | c:objc(cs)ClassReceivers(cpy)p1 -// CHECK: [[@LINE-4]]:22 | class-method/acc-set/ObjC | setP1: | c:objc(cs)ClassReceivers(cm)setP1: | +[ClassReceivers setP1:] | Decl,Dyn,Impl,RelChild,RelAcc | rel: 2 -// CHECK-NEXT: RelChild | ClassReceivers | c:objc(cs)ClassReceivers -// CHECK-NEXT: RelAcc | p1 | c:objc(cs)ClassReceivers(cpy)p1 -// CHECK: [[@LINE-7]]:22 | instance-property/ObjC | p1 | c:objc(cs)ClassReceivers(cpy)p1 | <no-cgname> | Decl,RelChild | rel: 1 -// CHECK-NEXT: RelChild | ClassReceivers | c:objc(cs)ClassReceivers - -+ (int)implicit; -+ (void)setImplicit:(int)x; - -@end - -void classReceivers() { - ClassReceivers.p1 = 0; -// CHECK: [[@LINE-1]]:3 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:18 | instance-property/ObjC | p1 | c:objc(cs)ClassReceivers(cpy)p1 | <no-cgname> | Ref,Writ,RelCont | rel: 1 -// CHECK-NEXT: RelCont | classReceivers | c:@F@classReceivers -// CHECK: [[@LINE-4]]:18 | class-method/acc-set/ObjC | setP1: | c:objc(cs)ClassReceivers(cm)setP1: | +[ClassReceivers setP1:] | Ref,Call,Impl,RelCall,RelCont | rel: 1 -// CHECK-NEXT: RelCall,RelCont | classReceivers | c:@F@classReceivers - (void)ClassReceivers.p1; -// CHECK: [[@LINE-1]]:9 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1 -// CHECK: [[@LINE-2]]:24 | instance-property/ObjC | p1 | c:objc(cs)ClassReceivers(cpy)p1 | <no-cgname> | Ref,RelCont | rel: 1 -// CHECK-NEXT: RelCont | classReceivers | c:@F@classReceivers -// CHECK: [[@LINE-4]]:24 | class-method/acc-get/ObjC | p1 | c:objc(cs)ClassReceivers(cm)p1 | +[ClassReceivers p1] | Ref,Call,Impl,RelCall,RelCont | rel: 1 -// CHECK-NEXT: RelCall,RelCont | classReceivers | c:@F@classReceivers - - ClassReceivers.implicit = 0; -// CHECK: [[@LINE-1]]:3 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1 - (void)ClassReceivers.implicit; -// CHECK: [[@LINE-1]]:9 | class/ObjC | ClassReceivers | c:objc(cs)ClassReceivers | _OBJC_CLASS_$_ClassReceivers | Ref,RelCont | rel: 1 -} - -@interface ImplicitProperties - -- (int)implicit; -- (void)setImplicit:(int)x; - -+ (int)classImplicit; -+ (void)setClassImplicit:(int)y; - -@end - -void testImplicitProperties(ImplicitProperties *c) { - c.implicit = 0; -// CHECK: [[@LINE-1]]:5 | instance-method/ObjC | setImplicit: | c:objc(cs)ImplicitProperties(im)setImplicit: | -[ImplicitProperties setImplicit:] | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 2 -// CHECK-NEXT: RelCall,RelCont | testImplicitProperties | c:@F@testImplicitProperties - c.implicit; -// CHECK: [[@LINE-1]]:5 | instance-method/ObjC | implicit | c:objc(cs)ImplicitProperties(im)implicit | -[ImplicitProperties implicit] | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 2 -// CHECK-NEXT: RelCall,RelCont | testImplicitProperties | c:@F@testImplicitProperties - ImplicitProperties.classImplicit = 1; -// CHECK: [[@LINE-1]]:22 | class-method/ObjC | setClassImplicit: | c:objc(cs)ImplicitProperties(cm)setClassImplicit: | +[ImplicitProperties setClassImplicit:] | Ref,Call,RelCall,RelCont | rel: 1 -// CHECK-NEXT: RelCall,RelCont | testImplicitProperties | c:@F@testImplicitProperties - ImplicitProperties.classImplicit; -// CHECK: [[@LINE-1]]:22 | class-method/ObjC | classImplicit | c:objc(cs)ImplicitProperties(cm)classImplicit | +[ImplicitProperties classImplicit] | Ref,Call,RelCall,RelCont | rel: 1 -// CHECK-NEXT: RelCall,RelCont | testImplicitProperties | c:@F@testImplicitProperties -} - -@interface EmptySelectors - -- (int):(int)_; // CHECK: [[@LINE]]:8 | instance-method/ObjC | : | c:objc(cs)EmptySelectors(im): | -[EmptySelectors :] -- (void)test: (int)x :(int)y; // CHECK: [[@LINE]]:9 | instance-method/ObjC | test:: | c:objc(cs)EmptySelectors(im)test:: | -[EmptySelectors test::] -- (void):(int)_ :(int)m:(int)z; // CHECK: [[@LINE]]:9 | instance-method/ObjC | ::: | c:objc(cs)EmptySelectors(im)::: | -[EmptySelectors :::] - -@end - -@implementation EmptySelectors - -- (int):(int)_ { // CHECK: [[@LINE]]:8 | instance-method/ObjC | : | c:objc(cs)EmptySelectors(im): | -[EmptySelectors :] - [self :2]; // CHECK: [[@LINE]]:9 | instance-method/ObjC | : | c:objc(cs)EmptySelectors(im): | -[EmptySelectors :] - return 0; -} - -- (void)test: (int)x :(int)y { // CHECK: [[@LINE]]:9 | instance-method/ObjC | test:: | c:objc(cs)EmptySelectors(im)test:: | -[EmptySelectors test::] -} - -- (void) :(int)_ :(int)m :(int)z { // CHECK: [[@LINE]]:10 | instance-method/ObjC | ::: | c:objc(cs)EmptySelectors(im)::: | -[EmptySelectors :::] - [self test:0:1]; // CHECK: [[@LINE]]:9 | instance-method/ObjC | test:: | c:objc(cs)EmptySelectors(im)test:: | -[EmptySelectors test::] - [self: 0: 1: 2]; // CHECK: [[@LINE]]:8 | instance-method/ObjC | ::: | c:objc(cs)EmptySelectors(im)::: | -[EmptySelectors :::] -} - -@end - -@protocol Prot3 // CHECK: [[@LINE]]:11 | protocol/ObjC | Prot3 | [[PROT3_USR:.*]] | <no-cgname> | Decl | --(void)meth; // CHECK: [[@LINE]]:8 | instance-method(protocol)/ObjC | meth | [[PROT3_meth_USR:.*]] | -[Prot3 meth] | Decl,Dyn,RelChild | -@end - -void test_rec1() { - id<Prot3, Prot1> o1; - [o1 meth]; // CHECK: [[@LINE]]:7 | instance-method(protocol)/ObjC | meth | [[PROT3_meth_USR]] | {{.*}} | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 3 - // CHECK-NEXT: RelCall,RelCont | test_rec1 | - // CHECK-NEXT: RelRec | Prot3 | [[PROT3_USR]] - // CHECK-NEXT: RelRec | Prot1 | [[PROT1_USR]] - Base<Prot3, Prot1> *o2; - [o2 meth]; // CHECK: [[@LINE]]:7 | instance-method/ObjC | meth | {{.*}} | Ref,Call,Dyn,RelRec,RelCall,RelCont | rel: 4 - // CHECK-NEXT: RelCall,RelCont | test_rec1 | - // CHECK-NEXT: RelRec | Base | [[BASE_USR]] - // CHECK-NEXT: RelRec | Prot3 | [[PROT3_USR]] - // CHECK-NEXT: RelRec | Prot1 | [[PROT1_USR]] -} diff --git a/test/Index/Core/index-source.mm b/test/Index/Core/index-source.mm deleted file mode 100644 index 049a0bdaf6474..0000000000000 --- a/test/Index/Core/index-source.mm +++ /dev/null @@ -1,11 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -target x86_64-apple-macosx10.7 | FileCheck %s - -@interface MyCls -@end - -@protocol P1,P2; - -// CHECK: [[@LINE+1]]:6 | function/C | foo | c:@F@foo#*$objc(cs)MyCls# | __Z3fooP5MyCls | Decl | rel: 0 -void foo(MyCls *o); -// CHECK: [[@LINE+1]]:6 | function/C | foo | c:@F@foo#*Qoobjc(pl)P1objc(pl)P2# | __Z3fooPU15objcproto2P12P211objc_object | Decl | rel: 0 -void foo(id<P2, P1> o); diff --git a/test/Index/Core/index-subkinds.m b/test/Index/Core/index-subkinds.m deleted file mode 100644 index 5eea046721b6c..0000000000000 --- a/test/Index/Core/index-subkinds.m +++ /dev/null @@ -1,60 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -target x86_64-apple-macosx10.7 | FileCheck %s - -// CHECK: [[@LINE+1]]:12 | class/ObjC | XCTestCase | c:objc(cs)XCTestCase | _OBJC_CLASS_$_XCTestCase | Decl | rel: 0 -@interface XCTestCase -@end - -// CHECK: [[@LINE+1]]:12 | class(test)/ObjC | MyTestCase | c:objc(cs)MyTestCase | _OBJC_CLASS_$_MyTestCase | Decl | rel: 0 -@interface MyTestCase : XCTestCase -@end -// CHECK: [[@LINE+1]]:17 | class(test)/ObjC | MyTestCase | c:objc(cs)MyTestCase | <no-cgname> | Def | rel: 0 -@implementation MyTestCase -// 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]]: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]]:8 | instance-method/ObjC | testWithInt: | c:objc(cs)MyTestCase(im)testWithInt: | -[MyTestCase testWithInt:] | Def,Dyn,RelChild | rel: 1 --(void)testWithInt:(int)i {} -@end - -// CHECK: [[@LINE+1]]:12 | class(test)/ObjC | SubTestCase | c:objc(cs)SubTestCase | _OBJC_CLASS_$_SubTestCase | Decl | rel: 0 -@interface SubTestCase : MyTestCase -@end -// CHECK: [[@LINE+1]]:17 | class(test)/ObjC | SubTestCase | c:objc(cs)SubTestCase | <no-cgname> | Def | rel: 0 -@implementation SubTestCase -// 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 - -// CHECK: [[@LINE+3]]:12 | class(test)/ObjC | MyTestCase | c:objc(cs)MyTestCase | _OBJC_CLASS_$_MyTestCase | Ref,RelExt,RelCont | rel: 1 -// CHECK-NEXT: RelExt,RelCont | cat | c:objc(cy)MyTestCase@cat -// CHECK: [[@LINE+1]]:23 | extension(test)/ObjC | cat | c:objc(cy)MyTestCase@cat | <no-cgname> | Decl | rel: 0 -@interface MyTestCase(cat) -@end -// CHECK: [[@LINE+2]]:17 | class(test)/ObjC | MyTestCase | c:objc(cs)MyTestCase | _OBJC_CLASS_$_MyTestCase | Ref,RelCont | rel: 1 -// CHECK: [[@LINE+1]]:28 | extension(test)/ObjC | cat | c:objc(cy)MyTestCase@cat | <no-cgname> | Def | rel: 0 -@implementation MyTestCase(cat) -// 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 - - -@class NSButton; -@interface IBCls - -// CHECK: [[@LINE+2]]:34 | instance-method/acc-get/ObjC | prop | c:objc(cs)IBCls(im)prop | -[IBCls prop] | Decl,Dyn,Impl,RelChild,RelAcc | rel: 2 -// CHECK: [[@LINE+1]]:34 | instance-property(IB)/ObjC | prop | c:objc(cs)IBCls(py)prop | <no-cgname> | Decl,RelChild | rel: 1 -@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]]:12 | instance-method(IB)/ObjC | doIt | c:objc(cs)IBCls(im)doIt | -[IBCls doIt] | Decl,Dyn,RelChild | rel: 1 --(IBAction)doIt; -@end - - -#define GKInspectable __attribute__((annotate("gk_inspectable"))) - -@interface GKI -// CHECK: [[@LINE+1]]:40 | instance-property(GKI)/ObjC | gkIntProp | c:objc(cs)GKI(py)gkIntProp | <no-cgname> | Decl,RelChild | rel: 1 -@property (readonly) GKInspectable int gkIntProp; -@end diff --git a/test/Index/Core/index-system.mm b/test/Index/Core/index-system.mm deleted file mode 100644 index 2ad31fae714f4..0000000000000 --- a/test/Index/Core/index-system.mm +++ /dev/null @@ -1,3 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -- %s -isystem %S/Inputs/sys | FileCheck %S/Inputs/sys/system-head.h - -#include "system-head.h" diff --git a/test/Index/Core/index-with-module.m b/test/Index/Core/index-with-module.m deleted file mode 100644 index ca89c2e1de382..0000000000000 --- a/test/Index/Core/index-with-module.m +++ /dev/null @@ -1,24 +0,0 @@ -// RUN: rm -rf %t.mcp -// RUN: c-index-test core -print-source-symbols -dump-imported-module-files -- %s -I %S/Inputs/module -fmodules -fmodules-cache-path=%t.mcp | FileCheck %s - -// CHECK: [[@LINE+1]]:9 | module/C | ModA | [[ModA_USR:c:@M@ModA]] | Decl | -@import ModA; -// CHECK: [[@LINE+1]]:1 | module/C | ModA | [[ModA_USR]] | Decl,Impl | -#include "ModA.h" - -@import ModA.SubModA.SubSubModA; -// CHECK: [[@LINE-1]]:9 | module/C | ModA | [[ModA_USR]] | Ref | -// CHECK: [[@LINE-2]]:14 | module/C | ModA.SubModA | c:@M@ModA@M@SubModA | Ref | -// CHECK: [[@LINE-3]]:22 | module/C | ModA.SubModA.SubSubModA | [[SubSubModA_USR:c:@M@ModA@M@SubModA@M@SubSubModA]] | Decl | -#include "SubSubModA.h" // CHECK: [[@LINE]]:1 | module/C | ModA.SubModA.SubSubModA | [[SubSubModA_USR]] | Decl,Impl | - -void foo() { - // CHECK: [[@LINE+1]]:3 | function/C | ModA_func | c:@F@ModA_func | {{.*}} | Ref,Call,RelCall,RelCont | rel: 1 - ModA_func(); -} - -// CHECK: ==== Module ModA ==== -// CHECK: 2:6 | function/C | ModA_func | c:@F@ModA_func | {{.*}} | Decl | rel: 0 -// CHECK: ---- Module Inputs ---- -// CHECK: user | {{.*}}ModA.h -// CHECK: user | {{.*}}module.modulemap diff --git a/test/Index/Core/no-templated-canonical-decl.cpp b/test/Index/Core/no-templated-canonical-decl.cpp deleted file mode 100644 index 5434e9cb65158..0000000000000 --- a/test/Index/Core/no-templated-canonical-decl.cpp +++ /dev/null @@ -1,4 +0,0 @@ -// RUN: c-index-test core -print-source-symbols -include-locals -- %s | FileCheck %s - -template <template <typename> class A> class B { typedef A<int> A_int; }; -// CHECK: [[@LINE-1]]:46 | class(Gen)/C++ | B | c:@ST>1#t>1#T@B | <no-cgname> | Def | rel: 0 |