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