llvm-capstone/clang/test/Modules/config-mismatch.cpp
Richard Smith a114c46e87 Revert r288626, which reverts r288449. Original commit message:
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
2016-12-06 00:40:17 +00:00

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}}
}