brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · c40c289 Raw
96 lines · plain
1// There are some edge-cases where Clang depends on knowing the module whose implementation it's currently building.2// This test makes sure scanner always reports the corresponding module map.3 4// RUN: rm -rf %t5// RUN: split-file %s %t6 7//--- frameworks/A.framework/Modules/module.modulemap8framework module A { umbrella header "A.h" }9//--- frameworks/B.framework/Modules/module.modulemap10framework module B { umbrella header "B.h" }11//--- frameworks/A.framework/Headers/A.h12//--- frameworks/B.framework/Headers/B.h13//--- frameworks/A.framework/Modules/module.private.modulemap14framework module A_Private { umbrella header "A_Private.h" }15//--- frameworks/B.framework/Modules/module.private.modulemap16framework module B_Private { umbrella header "B_Private.h" }17//--- frameworks/A.framework/PrivateHeaders/A_Private.h18#import <A/H.h>19//--- frameworks/B.framework/PrivateHeaders/B_Private.h20#import <B/H.h>21 22//--- shared/H.h23 24//--- overlay.json.template25{26  "case-sensitive": "false",27  "version": 0,28  "roots": [29    {30      "contents": [31        {32          "external-contents": "DIR/shared/H.h",33          "name": "H.h",34          "type": "file"35        }36      ],37      "name": "DIR/frameworks/A.framework/PrivateHeaders",38      "type": "directory"39    },40    {41      "contents": [42        {43          "external-contents": "DIR/shared/H.h",44          "name": "H.h",45          "type": "file"46        }47      ],48      "name": "DIR/frameworks/B.framework/PrivateHeaders",49      "type": "directory"50    }51  ]52}53 54//--- cdb.json.template55[{56  "file": "DIR/tu.m",57  "directory": "DIR",58  "command": "clang -fmodules -fmodules-cache-path=DIR/cache -fmodule-name=A -ivfsoverlay DIR/overlay.json -F DIR/frameworks -c DIR/tu.m -o DIR/tu.o"59}]60 61//--- tu.m62@import B;63#import <A/H.h>64#import <B/H.h>65 66// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json67// RUN: sed -e "s|DIR|%/t|g" %t/overlay.json.template > %t/overlay.json68 69// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json70// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t71// CHECK:      {72// CHECK:        "translation-units": [73// CHECK-NEXT:     {74// CHECK-NEXT:       "commands": [75// CHECK:              {76// CHECK:                "command-line": [77// CHECK:                  "-fmodule-map-file=[[PREFIX]]/frameworks/A.framework/Modules/module.modulemap",78// CHECK:                  "-fmodule-name=A",79// CHECK:                ],80// CHECK:                "file-deps": [81// CHECK-NEXT:             "[[PREFIX]]/tu.m",82// CHECK-NEXT:             "[[PREFIX]]/shared/H.h",83// CHECK-NEXT:             "[[PREFIX]]/overlay.json",84// CHECK-NEXT:             "[[PREFIX]]/frameworks/A.framework/Modules/module.modulemap"85// CHECK-NEXT:           ],86// CHECK-NEXT:           "input-file": "[[PREFIX]]/tu.m"87// CHECK-NEXT:         }88// CHECK:            ]89// CHECK:          }90 91// RUN: %deps-to-rsp %t/result.json --module-name=B > %t/B.cc1.rsp92// RUN: %clang @%t/B.cc1.rsp93 94// RUN: %deps-to-rsp %t/result.json --tu-index=0 > %t/tu.rsp95// RUN: %clang @%t/tu.rsp96