36 lines
1.0 KiB
C++
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'}}
|