102871701SBen Langmuir // Ensure the path to the modulemap input is included in the module context hash 202871701SBen Langmuir // irrespective of other TU command-line arguments, as it effects the canonical 302871701SBen Langmuir // module build command. In this test we use the difference in spelling between 402871701SBen Langmuir // module.modulemap and module.map, but it also applies to situations such as 502871701SBen Langmuir // differences in case-insensitive paths if they are not canonicalized away. 602871701SBen Langmuir 702871701SBen Langmuir // RUN: rm -rf %t 802871701SBen Langmuir // RUN: split-file %s %t 902871701SBen Langmuir // RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json 1002871701SBen Langmuir 11*71e32d5cSJan Svoboda // RUN: clang-scan-deps -compilation-database %t/cdb.json -j 1 \ 1202871701SBen Langmuir // RUN: -format experimental-full > %t/deps.json 1302871701SBen Langmuir 1402871701SBen Langmuir // RUN: mv %t/module.modulemap %t/module.map 1502871701SBen Langmuir // RUN: echo 'AFTER_MOVE' >> %t/deps.json 1602871701SBen Langmuir 17*71e32d5cSJan Svoboda // RUN: clang-scan-deps -compilation-database %t/cdb.json -j 1 \ 1802871701SBen Langmuir // RUN: -format experimental-full >> %t/deps.json 1902871701SBen Langmuir 2002871701SBen Langmuir // RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s 2102871701SBen Langmuir 2202871701SBen Langmuir // CHECK: { 2302871701SBen Langmuir // CHECK-NEXT: "modules": [ 2402871701SBen Langmuir // CHECK: { 2502871701SBen Langmuir // CHECK: "command-line": [ 2602871701SBen Langmuir // CHECK: "{{.*}}module.modulemap" 2702871701SBen Langmuir // CHECK: ] 2802871701SBen Langmuir // CHECK: "context-hash": "[[HASH1:.*]]" 2902871701SBen Langmuir // CHECK: "name": "Mod" 3002871701SBen Langmuir // CHECK-NEXT: } 3102871701SBen Langmuir // CHECK-NEXT: ] 3202871701SBen Langmuir // CHECK-NEXT: "translation-units": [ 3302871701SBen Langmuir // CHECK-NEXT: { 3402871701SBen Langmuir // CHECK: "clang-module-deps": [ 3502871701SBen Langmuir // CHECK-NEXT: { 3602871701SBen Langmuir // CHECK-NEXT: "context-hash": "[[HASH1]]" 3702871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 3802871701SBen Langmuir // CHECK-NEXT: } 3902871701SBen Langmuir // CHECK-NEXT: ] 4002871701SBen Langmuir // CHECK-LABEL: AFTER_MOVE 4102871701SBen Langmuir // CHECK: { 4202871701SBen Langmuir // CHECK-NEXT: "modules": [ 4302871701SBen Langmuir // CHECK: { 4402871701SBen Langmuir // CHECK-NOT: [[HASH1]] 4502871701SBen Langmuir // CHECK: "command-line": [ 4602871701SBen Langmuir // CHECK: "{{.*}}module.map" 4702871701SBen Langmuir // CHECK: ] 4802871701SBen Langmuir // CHECK-NOT: [[HASH1]] 4902871701SBen Langmuir // CHECK: "name": "Mod" 5002871701SBen Langmuir // CHECK-NEXT: } 5102871701SBen Langmuir // CHECK-NEXT: ] 5202871701SBen Langmuir // CHECK-NEXT: "translation-units": [ 5302871701SBen Langmuir // CHECK-NEXT: { 5402871701SBen Langmuir // CHECK: "clang-module-deps": [ 5502871701SBen Langmuir // CHECK-NEXT: { 5602871701SBen Langmuir // CHECK-NEXT: "context-hash": 5702871701SBen Langmuir // CHECK-NOT: [[HASH1]] 5802871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 5902871701SBen Langmuir // CHECK-NEXT: } 6002871701SBen Langmuir // CHECK-NEXT: ] 6102871701SBen Langmuir 6202871701SBen Langmuir //--- cdb.json.template 6302871701SBen Langmuir [ 6402871701SBen Langmuir { 6502871701SBen Langmuir "directory": "DIR", 6602871701SBen Langmuir "command": "clang -fsyntax-only DIR/tu.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache", 6702871701SBen Langmuir "file": "DIR/tu.c" 6802871701SBen Langmuir } 6902871701SBen Langmuir ] 7002871701SBen Langmuir 7102871701SBen Langmuir //--- module.modulemap 7202871701SBen Langmuir module Mod { header "Mod.h" } 7302871701SBen Langmuir 7402871701SBen Langmuir //--- Mod.h 7502871701SBen Langmuir 7602871701SBen Langmuir //--- tu.c 7702871701SBen Langmuir #include "Mod.h" 78