summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/module/module.interface
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-04-18 21:12:54 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-04-18 21:12:54 +0000
commita5bbbfef156c818f845a183096bed15747ecb8c3 (patch)
treead0bb51be1a7af3b564d650e195fadf2caf35a01 /clang/test/CXX/module/module.interface
parent4664916017ef0619f32371dd7ad225ca0f648d62 (diff)
downloadbcm5719-llvm-a5bbbfef156c818f845a183096bed15747ecb8c3.tar.gz
bcm5719-llvm-a5bbbfef156c818f845a183096bed15747ecb8c3.zip
[c++2a] Add semantic support for private module fragments.
llvm-svn: 358713
Diffstat (limited to 'clang/test/CXX/module/module.interface')
-rw-r--r--clang/test/CXX/module/module.interface/p1.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/clang/test/CXX/module/module.interface/p1.cpp b/clang/test/CXX/module/module.interface/p1.cpp
new file mode 100644
index 00000000000..1eba8175de4
--- /dev/null
+++ b/clang/test/CXX/module/module.interface/p1.cpp
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -std=c++2a %s -DERRORS -verify
+// RUN: %clang_cc1 -std=c++2a %s -emit-module-interface -o %t.pcm
+// RUN: %clang_cc1 -std=c++2a %s -fmodule-file=%t.pcm -DIMPLEMENTATION -verify -Db=b2 -Dc=c2
+
+module;
+
+#ifdef ERRORS
+export int a; // expected-error {{after the module declaration}}
+#endif
+
+#ifndef IMPLEMENTATION
+export
+#else
+// expected-error@#1 {{can only be used within a module interface unit}}
+// expected-error@#2 {{can only be used within a module interface unit}}
+// expected-note@+2 1+{{add 'export'}}
+#endif
+module M;
+
+export int b; // #1
+namespace N {
+ export int c; // #2
+}
+
+#ifdef ERRORS
+namespace {
+ export int d1; // FIXME: invalid
+ namespace X {
+ export int d2; // FIXME: invalid
+ }
+}
+
+export export int e; // expected-error {{within another export declaration}}
+export { export int f; } // expected-error {{within another export declaration}}
+
+module :private; // expected-note {{private module fragment begins here}}
+export int priv; // expected-error {{export declaration cannot be used in a private module fragment}}
+#endif
OpenPOWER on IntegriCloud