mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-11 02:16:50 +00:00
a114c46e87
Recover better from an incompatible .pcm file being provided by -fmodule-file=. We try to include the headers of the module textually in this case, still enforcing the modules semantic rules. In order to make that work, we need to still track that we're entering and leaving the module. Also, if the module was also marked as unavailable (perhaps because it was missing a file), we shouldn't mark the module unavailable -- we don't need the module to be complete if we're going to enter it textually. llvm-svn: 288741
14 lines
881 B
C++
14 lines
881 B
C++
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: echo 'module M { header "foo.h" header "bar.h" }' > %t/map
|
|
// RUN: echo 'template<typename T> void f(T t) { int n; t.f(n); }' > %t/foo.h
|
|
// RUN: touch %t/bar.h
|
|
// RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -x c++ %t/map -emit-module -fmodule-name=M -o %t/pcm
|
|
// RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fmodule-map-file=%t/map -fmodule-file=%t/pcm -I%t %s -fsyntax-only -fexceptions -Wno-module-file-config-mismatch -verify
|
|
// RUN: rm %t/bar.h
|
|
// RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fmodule-map-file=%t/map -fmodule-file=%t/pcm -I%t %s -fsyntax-only -fexceptions -Wno-module-file-config-mismatch -verify
|
|
#include "foo.h"
|
|
namespace n { // expected-note {{begins here}}
|
|
#include "foo.h" // expected-error {{redundant #include of module 'M' appears within namespace}}
|
|
}
|