// RUN: rm -rf %t | |
// RUN: mkdir -p %t | |
// RUN: split-file %s %t | |
// | |
// RUN: %clang_cc1 -std=c++20 %t/mod1.cppm -emit-module-interface -o %t/mod1.pcm | |
// RUN: %clang_cc1 -std=c++20 %t/mod2.cppm -emit-module-interface -o %t/mod2.pcm | |
// RUN: %clang_cc1 -std=c++20 %t/test.cpp -fprebuilt-module-path=%t -verify -fsyntax-only | |
//--- size_t.h | |
extern "C" { | |
typedef unsigned int size_t; | |
} | |
//--- csize_t | |
namespace std { | |
using :: size_t; | |
} | |
//--- align.h | |
namespace std { | |
enum class align_val_t : size_t {}; | |
} | |
//--- mod1.cppm | |
module; | |
#include "size_t.h" | |
#include "align.h" | |
export module mod1; | |
namespace std { | |
export using std::align_val_t; | |
} | |
//--- mod2.cppm | |
module; | |
#include "size_t.h" | |
#include "csize_t" | |
#include "align.h" | |
export module mod2; | |
namespace std { | |
export using std::align_val_t; | |
} | |
//--- test.cpp | |
// expected-no-diagnostics | |
import mod1; | |
import mod2; | |
void test() { | |
std::align_val_t v; | |
} | |