| 1 | [ |
| 2 | { |
| 3 | "directory": ".", |
| 4 | "command": "/usr/bin/clang++ -fsyntax-only -fno-ms-compatibility -fno-delayed-template-parsing t1.cpp", |
| 5 | "file": "t1.cpp" |
| 6 | }, |
| 7 | { |
| 8 | "directory": ".", |
| 9 | "command": "/usr/bin/clang++ -fsyntax-only -fno-ms-compatibility -fno-delayed-template-parsing t2.cpp -DBLAH", |
| 10 | "file": "t2.cpp" |
| 11 | }, |
| 12 | { |
| 13 | "directory": ".", |
| 14 | "command": "/usr/bin/clang++ -fsyntax-only -fno-ms-compatibility -fno-delayed-template-parsing t3.cpp -DBLAH", |
| 15 | "file": "t2.cpp" |
| 16 | } |
| 17 | ] |
| 18 | |
| 19 | // RUN: c-index-test -index-compile-db %s | FileCheck %s |
| 20 | |
| 21 | // CHECK: [startedTranslationUnit] |
| 22 | // CHECK-NEXT: [enteredMainFile]: t1.cpp |
| 23 | // CHECK: [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 |
| 24 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 |
| 25 | // CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:9:27 |
| 26 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 |
| 27 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 1 | isDef: 1 | isContainer: 1 |
| 28 | // CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | |
| 29 | // CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C | |
| 30 | // CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:15:5 |
| 31 | // CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 |
| 32 | // CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:19:5 |
| 33 | // CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val1' |
| 34 | // CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val2' |
| 35 | // CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val3' |
| 36 | |
| 37 | // CHECK-NEXT: [startedTranslationUnit] |
| 38 | // CHECK-NEXT: [enteredMainFile]: t2.cpp |
| 39 | // CHECK: [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 |
| 40 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 41 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 |
| 42 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isContainer: skipped |
| 43 | // CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | |
| 44 | // CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C | |
| 45 | // CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 46 | // CHECK-NEXT: [ppIncludedFile]: ./pragma_once.h |
| 47 | // CHECK-NEXT: [indexDeclaration]: kind: function | name: foo2 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 |
| 48 | // CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:25:5 |
| 49 | // CHECK: [indexDeclaration]: kind: c++-instance-method | name: tsmeth | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 |
| 50 | // CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./pragma_once.h:8:7 |
| 51 | // CHECK: [indexDeclaration]: kind: function | name: imp_foo | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 |
| 52 | // CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./imported.h:4:5 |
| 53 | // CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val4' |
| 54 | // CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_tsval' |
| 55 | // CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_impval' |
| 56 | |
| 57 | // CHECK-NEXT: [startedTranslationUnit] |
| 58 | // CHECK-NEXT: [enteredMainFile]: t3.cpp |
| 59 | // CHECK: [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 |
| 60 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 61 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 |
| 62 | // CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 1 | isDef: 1 | isContainer: skipped |
| 63 | // CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | |
| 64 | // CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C | |
| 65 | // CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 66 | // CHECK-NEXT: [ppIncludedFile]: ./pragma_once.h |
| 67 | // CHECK-NEXT: [indexDeclaration]: kind: function | name: foo2 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 68 | // CHECK-NEXT: [indexDeclaration]: kind: variable | {{.*}} | loc: ./pragma_once.h:3:12 |
| 69 | // CHECK: [indexDeclaration]: kind: c++-instance-method | name: tsmeth | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 70 | // CHECK-NOT: [indexEntityReference]: kind: variable | name: some_val | |
| 71 | // CHECK: [indexDeclaration]: kind: function | name: imp_foo | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped |
| 72 | // CHECK-NOT: [indexEntityReference]: kind: variable | name: some_val | |
| 73 | // CHECK-NOT: [diagnostic]: {{.*}} undeclared identifier |
| 74 | |