summaryrefslogtreecommitdiff
path: root/test/Index/Core
diff options
context:
space:
mode:
Diffstat (limited to 'test/Index/Core')
-rw-r--r--test/Index/Core/Inputs/module/ModA.h2
-rw-r--r--test/Index/Core/Inputs/module/SubModA.h2
-rw-r--r--test/Index/Core/Inputs/module/SubSubModA.h2
-rw-r--r--test/Index/Core/Inputs/module/module.modulemap11
-rw-r--r--test/Index/Core/Inputs/sys/system-head.h36
-rw-r--r--test/Index/Core/designated-inits.c33
-rw-r--r--test/Index/Core/external-source-symbol-attr.m104
-rw-r--r--test/Index/Core/index-dependent-source.cpp226
-rw-r--r--test/Index/Core/index-instantiated-source.cpp88
-rw-r--r--test/Index/Core/index-macros.c12
-rw-r--r--test/Index/Core/index-pch.c13
-rw-r--r--test/Index/Core/index-pch.cpp17
-rw-r--r--test/Index/Core/index-source-invalid-name.cpp13
-rw-r--r--test/Index/Core/index-source.cpp562
-rw-r--r--test/Index/Core/index-source.m492
-rw-r--r--test/Index/Core/index-source.mm11
-rw-r--r--test/Index/Core/index-subkinds.m60
-rw-r--r--test/Index/Core/index-system.mm3
-rw-r--r--test/Index/Core/index-with-module.m24
-rw-r--r--test/Index/Core/no-templated-canonical-decl.cpp4
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