18df390f9SRichard Smith// RUN:     %clang_cc1 -std=c++1z -fmodules-ts -emit-module-interface %s -o %t.pcm -verify
2145e15a3SRichard Smith// RUN:     %clang_cc1 -std=c++1z -fmodules-ts -emit-module-interface %s -o %t.pcm -verify -DERRORS
3bbcc9f04SRichard Smith
481328ac3SRichard Smithexport module foo;
58df390f9SRichard Smith#ifndef ERRORS
68df390f9SRichard Smith// expected-no-diagnostics
78df390f9SRichard Smith#else
881328ac3SRichard Smith// FIXME: diagnose missing module-declaration when building module interface
9bbcc9f04SRichard Smith
108df390f9SRichard Smith// FIXME: proclaimed-ownership-declarations?
118df390f9SRichard Smith
128df390f9SRichard Smithexport {
138df390f9SRichard Smith  int a;
148df390f9SRichard Smith  int b;
158df390f9SRichard Smith}
168df390f9SRichard Smithexport int c;
178df390f9SRichard Smith
188df390f9SRichard Smithnamespace N {
198df390f9SRichard Smithexport void f() {}
20*9db81628SChuanqi Xu} // namespace N
218df390f9SRichard Smith
22*9db81628SChuanqi Xuexport struct T {
23*9db81628SChuanqi Xu} t;
248df390f9SRichard Smith
258df390f9SRichard Smithstruct S {
268df390f9SRichard Smith  export int n;        // expected-error {{expected member name or ';'}}
278df390f9SRichard Smith  export static int n; // expected-error {{expected member name or ';'}}
288df390f9SRichard Smith};
298df390f9SRichard Smithvoid f() {
308df390f9SRichard Smith  export int n; // expected-error {{expected expression}}
318df390f9SRichard Smith}
32bbcc9f04SRichard Smith#endif
33