llvm-project/clang/test/Modules/preprocess-build.cpp

36 lines
1.0 KiB
C++

// RUN: %clang_cc1 -std=c++1z -fmodules %s -verify
#pragma clang module build baz
module baz {}
#pragma clang module endbuild // baz
#pragma clang module build foo
module foo { module bar {} }
#pragma clang module contents
#pragma clang module begin foo.bar
// Can import baz here even though it was created in an outer build.
#pragma clang module import baz
#pragma clang module build bar
module bar {}
#pragma clang module contents
#pragma clang module begin bar
extern int n;
#pragma clang module end
#pragma clang module endbuild // bar
#pragma clang module import bar
constexpr int *f() { return &n; }
#pragma clang module end
#pragma clang module endbuild // foo
#pragma clang module import bar
#pragma clang module import foo.bar
static_assert(f() == &n);
#pragma clang module build // expected-error {{expected module name}}
#pragma clang module build unterminated // expected-error {{no matching '#pragma clang module endbuild'}}