[flang][cuda] Adapt ExternalNameConversion to work in gpu module (#117039)
[llvm-project.git] / clang / test / ClangScanDeps / modules-has-include-umbrella-header.c
blob022c59ca65db2ed396e39fe8b7325ea1e6df7df1
1 // This test checks that __has_include(<FW/PrivateHeader.h>) in a module does
2 // not clobber #include <FW/PrivateHeader.h> in importers of said module.
4 // RUN: rm -rf %t
5 // RUN: split-file %s %t
7 //--- cdb.json.template
8 [{
9 "file": "DIR/tu.c",
10 "directory": "DIR",
11 "command": "clang DIR/tu.c -fmodules -fmodules-cache-path=DIR/cache -I DIR/modules -F DIR/frameworks -o DIR/tu.o"
14 //--- frameworks/FW.framework/Modules/module.private.modulemap
15 framework module FW_Private {
16 umbrella header "A.h"
17 module * { export * }
19 //--- frameworks/FW.framework/PrivateHeaders/A.h
20 #include <FW/B.h>
21 //--- frameworks/FW.framework/PrivateHeaders/B.h
22 #include "dependency.h"
24 //--- modules/module.modulemap
25 module Poison { header "poison.h" }
26 module Import { header "import.h" }
27 module Dependency { header "dependency.h" }
28 //--- modules/poison.h
29 #if __has_include(<FW/B.h>)
30 #define HAS_B 1
31 #else
32 #define HAS_B 0
33 #endif
34 //--- modules/import.h
35 #include <FW/B.h>
36 //--- modules/dependency.h
38 //--- tu.c
39 #include "poison.h"
41 #if __has_include(<FW/B.h>)
42 #endif
44 #include "import.h"
46 #include <FW/B.h>
48 // RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
49 // RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/deps.json
50 // RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
52 // Let's check that the TU actually depends on `FW_Private` (and does not treat FW/B.h as textual).
53 // CHECK: {
54 // CHECK: "translation-units": [
55 // CHECK-NEXT: {
56 // CHECK-NEXT: "commands": [
57 // CHECK-NEXT: {
58 // CHECK-NEXT: "clang-context-hash": "{{.*}}",
59 // CHECK-NEXT: "clang-module-deps": [
60 // CHECK-NEXT: {
61 // CHECK-NEXT: "context-hash": "{{.*}}",
62 // CHECK-NEXT: "module-name": "FW_Private"
63 // CHECK-NEXT: }
64 // CHECK: ],
65 // CHECK-NEXT: "command-line": [
66 // CHECK: ],
67 // CHECK: "file-deps": [
68 // CHECK-NEXT: "[[PREFIX]]/tu.c"
69 // CHECK-NEXT: ],
70 // CHECK-NEXT: "input-file": "[[PREFIX]]/tu.c"
71 // CHECK-NEXT: }
72 // CHECK: ]
73 // CHECK: }
74 // CHECK: ]
75 // CHECK: }