| 1 | // CHECK: [[@LINE+1]]:12 | class/ObjC | Base | [[Base_USR:.*]] | {{.*}} | Decl | rel: 0 |
| 2 | @interface Base |
| 3 | @end |
| 4 | |
| 5 | // CHECK: [[@LINE+1]]:11 | protocol/ObjC | Prot1 | [[Prot1_USR:.*]] | {{.*}} | Decl | rel: 0 |
| 6 | @protocol Prot1 |
| 7 | @end |
| 8 | |
| 9 | // CHECK: [[@LINE+3]]:11 | protocol/ObjC | Prot2 | [[Prot2_USR:.*]] | {{.*}} | Decl | rel: 0 |
| 10 | // CHECK: [[@LINE+2]]:17 | protocol/ObjC | Prot1 | [[Prot1_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 |
| 11 | // CHECK-NEXT: RelBase,RelCont | Prot2 | [[Prot2_USR]] |
| 12 | @protocol Prot2<Prot1> |
| 13 | @end |
| 14 | |
| 15 | // CHECK: [[@LINE+7]]:12 | class/ObjC | Sub | [[Sub_USR:.*]] | {{.*}} | Decl | rel: 0 |
| 16 | // CHECK: [[@LINE+6]]:18 | class/ObjC | Base | [[Base_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 |
| 17 | // CHECK-NEXT: RelBase,RelCont | Sub | [[Sub_USR]] |
| 18 | // CHECK: [[@LINE+4]]:23 | protocol/ObjC | Prot2 | [[Prot2_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 |
| 19 | // CHECK-NEXT: RelBase,RelCont | Sub | [[Sub_USR]] |
| 20 | // CHECK: [[@LINE+2]]:30 | protocol/ObjC | Prot1 | [[Prot1_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 |
| 21 | // CHECK-NEXT: RelBase,RelCont | Sub | [[Sub_USR]] |
| 22 | @interface Sub : Base<Prot2, Prot1> |
| 23 | // CHECK-NOT: [[@LINE+1]]:3 | class/ObjC | Sub | |
| 24 | -(Sub*)getit; |
| 25 | @end |
| 26 | |
| 27 | // CHECK: [[@LINE+1]]:7 | class/C++ | Cls | [[Cls_USR:.*]] | {{.*}} | Def | rel: 0 |
| 28 | class Cls {}; |
| 29 | |
| 30 | // CHECK: [[@LINE+3]]:7 | class/C++ | SubCls1 | [[SubCls1_USR:.*]] | {{.*}} | Def | rel: 0 |
| 31 | // CHECK: [[@LINE+2]]:24 | class/C++ | Cls | [[Cls_USR]] | {{.*}} | Ref,RelBase,RelCont | rel: 1 |
| 32 | // CHECK-NEXT: RelBase,RelCont | SubCls1 | [[SubCls1_USR]] |
| 33 | class SubCls1 : public Cls { |
| 34 | // CHECK-NOT: [[@LINE+1]]:3 | class/C++ | SubCls1 | |
| 35 | SubCls1 *f; |
| 36 | }; |
| 37 | |