1*a5bbbfefSRichard Smith // RUN: %clang_cc1 -std=c++2a -DEXPORT %s -verify
2*a5bbbfefSRichard Smith // RUN: %clang_cc1 -std=c++2a -DEXPORT %s -emit-module-interface -o %t.pcm
3*a5bbbfefSRichard Smith // RUN: %clang_cc1 -std=c++2a -UEXPORT %s -verify -fmodule-file=%t.pcm
4*a5bbbfefSRichard Smith 
5*a5bbbfefSRichard Smith #ifdef EXPORT
6*a5bbbfefSRichard Smith // expected-no-diagnostics
7*a5bbbfefSRichard Smith export
8*a5bbbfefSRichard Smith #else
9*a5bbbfefSRichard Smith // expected-note@+2 {{add 'export' here}}
10*a5bbbfefSRichard Smith #endif
11*a5bbbfefSRichard Smith module M;
12*a5bbbfefSRichard Smith 
13*a5bbbfefSRichard Smith #ifndef EXPORT
14*a5bbbfefSRichard Smith // expected-error@+2 {{private module fragment in module implementation unit}}
15*a5bbbfefSRichard Smith #endif
16*a5bbbfefSRichard Smith module :private;
17