1*1f2bd35bSRichard Smith // RUN: %clang_cc1 -std=c++1z -fmodules %s -verify 25d2ed489SRichard Smith 35d2ed489SRichard Smith #pragma clang module build baz 45d2ed489SRichard Smith module baz {} 55d2ed489SRichard Smith #pragma clang module endbuild // baz 65d2ed489SRichard Smith 75d2ed489SRichard Smith #pragma clang module build foo 85d2ed489SRichard Smith module foo { module bar {} } 95d2ed489SRichard Smith #pragma clang module contents 105d2ed489SRichard Smith #pragma clang module begin foo.bar 115d2ed489SRichard Smith 125d2ed489SRichard Smith // Can import baz here even though it was created in an outer build. 135d2ed489SRichard Smith #pragma clang module import baz 145d2ed489SRichard Smith 155d2ed489SRichard Smith #pragma clang module build bar 165d2ed489SRichard Smith module bar {} 175d2ed489SRichard Smith #pragma clang module contents 185d2ed489SRichard Smith #pragma clang module begin bar 195d2ed489SRichard Smith extern int n; 205d2ed489SRichard Smith #pragma clang module end 215d2ed489SRichard Smith #pragma clang module endbuild // bar 225d2ed489SRichard Smith 235d2ed489SRichard Smith #pragma clang module import bar 245d2ed489SRichard Smith f()255d2ed489SRichard Smith constexpr int *f() { return &n; } 265d2ed489SRichard Smith 275d2ed489SRichard Smith #pragma clang module end 285d2ed489SRichard Smith #pragma clang module endbuild // foo 295d2ed489SRichard Smith 305d2ed489SRichard Smith #pragma clang module import bar 315d2ed489SRichard Smith #pragma clang module import foo.bar 325d2ed489SRichard Smith static_assert(f() == &n); 335d2ed489SRichard Smith 345d2ed489SRichard Smith #pragma clang module build // expected-error {{expected module name}} 355d2ed489SRichard Smith #pragma clang module build unterminated // expected-error {{no matching '#pragma clang module endbuild'}} 36