diff options
Diffstat (limited to 'test/Index/skip-parsed-bodies')
-rw-r--r-- | test/Index/skip-parsed-bodies/compile_commands.json | 71 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/imported.h | 5 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/lit.local.cfg | 1 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/pragma_once.h | 10 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/t.h | 30 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/t1.cpp | 1 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/t2.cpp | 3 | ||||
-rw-r--r-- | test/Index/skip-parsed-bodies/t3.cpp | 3 |
8 files changed, 124 insertions, 0 deletions
diff --git a/test/Index/skip-parsed-bodies/compile_commands.json b/test/Index/skip-parsed-bodies/compile_commands.json new file mode 100644 index 0000000..da5e777 --- /dev/null +++ b/test/Index/skip-parsed-bodies/compile_commands.json @@ -0,0 +1,71 @@ +[ +{ + "directory": ".", + "command": "/usr/bin/clang++ -fsyntax-only t1.cpp", + "file": "t1.cpp" +}, +{ + "directory": ".", + "command": "/usr/bin/clang++ -fsyntax-only t2.cpp -DBLAH", + "file": "t2.cpp" +}, +{ + "directory": ".", + "command": "/usr/bin/clang++ -fsyntax-only t3.cpp -DBLAH", + "file": "t2.cpp" +} +] + +// XFAIL: mingw32,win32 +// RUN: c-index-test -index-compile-db %s | FileCheck %s + +// CHECK: [enteredMainFile]: t1.cpp +// CHECK: [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 +// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:9:27 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 1 | isDef: 1 | isContainer: 1 +// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | +// CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C | +// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:15:5 +// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 +// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:19:5 +// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val1' +// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val2' +// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val3' + +// CHECK-NEXT: [enteredMainFile]: t2.cpp +// CHECK: [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isContainer: skipped +// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | +// CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C | +// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NEXT: [ppIncludedFile]: ./pragma_once.h +// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo2 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 +// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:25:5 +// CHECK: [indexDeclaration]: kind: c++-instance-method | name: tsmeth | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 +// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./pragma_once.h:8:7 +// CHECK: [indexDeclaration]: kind: function | name: imp_foo | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1 +// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./imported.h:4:5 +// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val4' +// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_tsval' +// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_impval' + +// CHECK-NEXT: [enteredMainFile]: t3.cpp +// CHECK: [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0 +// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 1 | isDef: 1 | isContainer: skipped +// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | +// CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C | +// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NEXT: [ppIncludedFile]: ./pragma_once.h +// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo2 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NEXT: [indexDeclaration]: kind: variable | {{.*}} | loc: ./pragma_once.h:3:12 +// CHECK: [indexDeclaration]: kind: c++-instance-method | name: tsmeth | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NOT: [indexEntityReference]: kind: variable | name: some_val | +// CHECK: [indexDeclaration]: kind: function | name: imp_foo | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped +// CHECK-NOT: [indexEntityReference]: kind: variable | name: some_val | +// CHECK-NOT: [diagnostic]: {{.*}} undeclared identifier diff --git a/test/Index/skip-parsed-bodies/imported.h b/test/Index/skip-parsed-bodies/imported.h new file mode 100644 index 0000000..86673e1 --- /dev/null +++ b/test/Index/skip-parsed-bodies/imported.h @@ -0,0 +1,5 @@ +extern int some_val; + +static inline int imp_foo() { + ++some_val; return undef_impval; +} diff --git a/test/Index/skip-parsed-bodies/lit.local.cfg b/test/Index/skip-parsed-bodies/lit.local.cfg new file mode 100644 index 0000000..b38b51a --- /dev/null +++ b/test/Index/skip-parsed-bodies/lit.local.cfg @@ -0,0 +1 @@ +config.suffixes = ['.json'] diff --git a/test/Index/skip-parsed-bodies/pragma_once.h b/test/Index/skip-parsed-bodies/pragma_once.h new file mode 100644 index 0000000..76d2d94 --- /dev/null +++ b/test/Index/skip-parsed-bodies/pragma_once.h @@ -0,0 +1,10 @@ +#pragma once + +extern int some_val; + +template <typename T> +struct TS { + int tsmeth() { + ++some_val; return undef_tsval; + } +}; diff --git a/test/Index/skip-parsed-bodies/t.h b/test/Index/skip-parsed-bodies/t.h new file mode 100644 index 0000000..a52b749 --- /dev/null +++ b/test/Index/skip-parsed-bodies/t.h @@ -0,0 +1,30 @@ +#ifndef _T_H_ +#define _T_H_ + +extern int some_val; + +namespace NS { + class C { + void method_decl(); + int method_def1() { ++some_val; return undef_val1; } + inline int method_def2(); + }; +} + +inline int NS::C::method_def2() { + ++some_val; return undef_val2; +} + +static inline int foo1() { + ++some_val; return undef_val3; +} + +#ifdef BLAH + +static inline int foo2() { + ++some_val; return undef_val4; +} + +#endif + +#endif diff --git a/test/Index/skip-parsed-bodies/t1.cpp b/test/Index/skip-parsed-bodies/t1.cpp new file mode 100644 index 0000000..05918d7 --- /dev/null +++ b/test/Index/skip-parsed-bodies/t1.cpp @@ -0,0 +1 @@ +#include "t.h" diff --git a/test/Index/skip-parsed-bodies/t2.cpp b/test/Index/skip-parsed-bodies/t2.cpp new file mode 100644 index 0000000..93fff44 --- /dev/null +++ b/test/Index/skip-parsed-bodies/t2.cpp @@ -0,0 +1,3 @@ +#include "t.h" +#include "pragma_once.h" +#import "imported.h" diff --git a/test/Index/skip-parsed-bodies/t3.cpp b/test/Index/skip-parsed-bodies/t3.cpp new file mode 100644 index 0000000..93fff44 --- /dev/null +++ b/test/Index/skip-parsed-bodies/t3.cpp @@ -0,0 +1,3 @@ +#include "t.h" +#include "pragma_once.h" +#import "imported.h" |