llvm-project/clang/test/Modules/transitive-system.test
Michael Spencer e1f4daf836
[clang][modules] Correctly set module map systemness (#131940)
This uses the systemness of the module map instead of of the Module
instance, as doing otherwise could incorrectly parse the other modules
in that module map as system.

This is still correct as the only ways to get a system module are by the
module map being in a system path, or the module having the [system]
attribute, both of which are handled here.

This makes it so that the systemness of a module is deterministic
instead of depending on the path taken to build it.
2025-03-19 11:19:25 -07:00

28 lines
877 B
Plaintext

// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-name=direct > %t/result1.json
// RUN: rm -rf %t/cache
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-name=transitive > %t/result2.json
// RUN: %deps-to-rsp %t/result1.json --module-name transitive > %t/1.rsp
// RUN: %deps-to-rsp %t/result2.json --module-name transitive > %t/2.rsp
// RUN: diff %t/1.rsp %t/2.rsp
//--- module.modulemap
module direct [system] { header "direct.h" }
module transitive { header "transitive.h" }
//--- direct.h
#include "transitive.h"
//--- transitive.h
// empty
//--- cdb.json.template
[{
"file": "",
"directory": "DIR",
"command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR -x c"
}]