xref: /llvm-project/clang/test/ClangScanDeps/depscan-lex-has-include.c (revision ed6d09dd4ead70d2858d56c530af38eefa1ef595)
1*ed6d09ddSArgyrios Kyrtzidis // RUN: rm -rf %t
2*ed6d09ddSArgyrios Kyrtzidis // RUN: split-file %s %t
3*ed6d09ddSArgyrios Kyrtzidis // RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
4*ed6d09ddSArgyrios Kyrtzidis 
5*ed6d09ddSArgyrios Kyrtzidis // RUN: clang-scan-deps -compilation-database %t/cdb.json | FileCheck %s
6*ed6d09ddSArgyrios Kyrtzidis // CHECK: t.c
7*ed6d09ddSArgyrios Kyrtzidis // CHECK: something.h
8*ed6d09ddSArgyrios Kyrtzidis 
9*ed6d09ddSArgyrios Kyrtzidis // RUN: sed -e "s|DIR|%/t|g" %t/cdb-error.json.template > %t/cdb-error.json
10*ed6d09ddSArgyrios Kyrtzidis // RUN: not clang-scan-deps -compilation-database %t/cdb-error.json 2>&1 | FileCheck %s -check-prefix=ERROR
11*ed6d09ddSArgyrios Kyrtzidis // ERROR: error: expected '>'
12*ed6d09ddSArgyrios Kyrtzidis // ERROR: error: expected value in expression
13*ed6d09ddSArgyrios Kyrtzidis 
14*ed6d09ddSArgyrios Kyrtzidis //--- cdb.json.template
15*ed6d09ddSArgyrios Kyrtzidis [
16*ed6d09ddSArgyrios Kyrtzidis   {
17*ed6d09ddSArgyrios Kyrtzidis     "directory": "DIR",
18*ed6d09ddSArgyrios Kyrtzidis     "command": "clang -fsyntax-only DIR/t.c -I DIR",
19*ed6d09ddSArgyrios Kyrtzidis     "file": "DIR/t.c"
20*ed6d09ddSArgyrios Kyrtzidis   }
21*ed6d09ddSArgyrios Kyrtzidis ]
22*ed6d09ddSArgyrios Kyrtzidis 
23*ed6d09ddSArgyrios Kyrtzidis //--- cdb-error.json.template
24*ed6d09ddSArgyrios Kyrtzidis [
25*ed6d09ddSArgyrios Kyrtzidis   {
26*ed6d09ddSArgyrios Kyrtzidis     "directory": "DIR",
27*ed6d09ddSArgyrios Kyrtzidis     "command": "clang -fsyntax-only DIR/error.c",
28*ed6d09ddSArgyrios Kyrtzidis     "file": "DIR/error.c"
29*ed6d09ddSArgyrios Kyrtzidis   }
30*ed6d09ddSArgyrios Kyrtzidis ]
31*ed6d09ddSArgyrios Kyrtzidis 
32*ed6d09ddSArgyrios Kyrtzidis //--- t.c
33*ed6d09ddSArgyrios Kyrtzidis 
34*ed6d09ddSArgyrios Kyrtzidis #define something
35*ed6d09ddSArgyrios Kyrtzidis 
36*ed6d09ddSArgyrios Kyrtzidis // Make sure the include is lexed as a literal, ignoring the macro.
37*ed6d09ddSArgyrios Kyrtzidis #if __has_include(<something/something.h>)
38*ed6d09ddSArgyrios Kyrtzidis #include <something/something.h>
39*ed6d09ddSArgyrios Kyrtzidis #endif
40*ed6d09ddSArgyrios Kyrtzidis 
41*ed6d09ddSArgyrios Kyrtzidis //--- something/something.h
42*ed6d09ddSArgyrios Kyrtzidis 
43*ed6d09ddSArgyrios Kyrtzidis //--- error.c
44*ed6d09ddSArgyrios Kyrtzidis #if __has_include(<something/something.h)
45*ed6d09ddSArgyrios Kyrtzidis #define MAC
46*ed6d09ddSArgyrios Kyrtzidis #endif
47