xref: /llvm-project/clang/test/ClangScanDeps/diagnostic-pragmas.c (revision 642c6638a3d78359552f5cf71d24a80a9bd9801f)
1*642c6638SVolodymyr Sapsai // Test scanning deps does not have more errors than the regular compilation.
2*642c6638SVolodymyr Sapsai 
3*642c6638SVolodymyr Sapsai // RUN: rm -rf %t
4*642c6638SVolodymyr Sapsai // RUN: split-file %s %t
5*642c6638SVolodymyr Sapsai // RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
6*642c6638SVolodymyr Sapsai 
7*642c6638SVolodymyr Sapsai // Check the regular compilation does not fail.
8*642c6638SVolodymyr Sapsai // RUN: %clang -fsyntax-only %t/test.c -I %t/include -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/cache -Wnon-modular-include-in-module -Werror=non-modular-include-in-module
9*642c6638SVolodymyr Sapsai 
10*642c6638SVolodymyr Sapsai // And now scanning deps should succeed too.
11*642c6638SVolodymyr Sapsai // RUN: clang-scan-deps -compilation-database %t/cdb.json -j 1
12*642c6638SVolodymyr Sapsai 
13*642c6638SVolodymyr Sapsai //--- cdb.json.template
14*642c6638SVolodymyr Sapsai [
15*642c6638SVolodymyr Sapsai   {
16*642c6638SVolodymyr Sapsai     "directory": "DIR",
17*642c6638SVolodymyr Sapsai     "command": "clang -fsyntax-only DIR/test.c -I DIR/include -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache -Wnon-modular-include-in-module -Werror=non-modular-include-in-module",
18*642c6638SVolodymyr Sapsai     "file": "DIR/test.c"
19*642c6638SVolodymyr Sapsai   },
20*642c6638SVolodymyr Sapsai ]
21*642c6638SVolodymyr Sapsai 
22*642c6638SVolodymyr Sapsai //--- include/nonmodular.h
23*642c6638SVolodymyr Sapsai // empty
24*642c6638SVolodymyr Sapsai 
25*642c6638SVolodymyr Sapsai //--- include/modular-includer.h
26*642c6638SVolodymyr Sapsai #pragma clang diagnostic push
27*642c6638SVolodymyr Sapsai #pragma clang diagnostic ignored "-Wnon-modular-include-in-module"
28*642c6638SVolodymyr Sapsai #include <nonmodular.h>
29*642c6638SVolodymyr Sapsai #pragma clang diagnostic pop
30*642c6638SVolodymyr Sapsai 
31*642c6638SVolodymyr Sapsai //--- include/module.modulemap
32*642c6638SVolodymyr Sapsai module ModularIncluder { header "modular-includer.h" }
33*642c6638SVolodymyr Sapsai 
34*642c6638SVolodymyr Sapsai //--- test.c
35*642c6638SVolodymyr Sapsai #include <modular-includer.h>
36