aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/parser+module.test.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/cc/parser+module.test.testscript')
-rw-r--r--libbuild2/cc/parser+module.test.testscript86
1 files changed, 69 insertions, 17 deletions
diff --git a/libbuild2/cc/parser+module.test.testscript b/libbuild2/cc/parser+module.test.testscript
index b92f80b..6935f5e 100644
--- a/libbuild2/cc/parser+module.test.testscript
+++ b/libbuild2/cc/parser+module.test.testscript
@@ -7,6 +7,30 @@
# NOTE: currently header unit imports don't produce anything.
#
+: module-iface
+:
+$* <<EOI >>EOI
+export module foo;
+EOI
+
+: module-impl
+:
+$* <<EOI >>EOI
+module foo;
+EOI
+
+: module-iface-part
+:
+$* <<EOI >>EOI
+export module foo:part;
+EOI
+
+: module-impl-part
+:
+$* <<EOI >>EOI
+module foo.bar:part.sub;
+EOI
+
: import
:
$* <<EOI >>EOI
@@ -20,20 +44,30 @@ EOI
$* <<EOI
import "foo.h";
import <sys/foo.h>;
-__import "/usr/include/stdio.h";
+import "/usr/include/stdio.h" [[__translated]];
EOI
-: module-implementation
+: import-part
:
-$* <<EOI >>EOI
+$* <<EOI >>EOO
module foo;
+import :part;
+import :part.sub;
EOI
+module foo;
+import foo:part;
+import foo:part.sub;
+EOO
-: module-interface
+: import-part-from-part
:
-$* <<EOI >>EOI
-export module foo;
+$* <<EOI >>EOO
+module foo:part;
+import :part.sub;
EOI
+module foo:part;
+import foo:part.sub;
+EOO
: export-imported
:
@@ -45,6 +79,18 @@ EOI
export import foo;
EOO
+: non-import
+:
+$* <<EOI
+import
+foo;
+export import(*a);
+import::inner xi = {};
+::import <a>;
+class import<int>;
+import ::x;
+EOI
+
: non-module
:
$* <<EOI
@@ -52,17 +98,21 @@ $* <<EOI
#pragma export module foo;
#pragma module foo;
export namespace bar {int fox ();}
+module
+foo;
+foo::module();
+module::inner yi = {};
EOI
: attribute
:
$* <<EOI >>EOO
+module bar [[module({module})]];
import foo [[export({import})]];
import "foo.h" [[export({import})]];
-module bar [[module({module})]];
EOI
-import foo;
module bar;
+import foo;
EOO
: import-duplicate
@@ -77,6 +127,16 @@ import foo;
import bar.baz;
EOO
+: part-out-purview
+:
+$* <<EOI 2>>EOE != 0
+module;
+import :part
+module foo;
+EOI
+<stdin>:2:8: error: partition importation out of module purview
+EOE
+
: brace-missing
:
$* <<EOI 2>>EOE
@@ -105,20 +165,12 @@ EOI
<stdin>:6:1: warning: extraneous '}'
EOE
-: import-missing-name
-:
-$* <<EOI 2>>EOE != 0
-import ;
-EOI
-<stdin>:1:8: error: module or header name expected instead of ';'
-EOE
-
: module-missing-name
:
$* <<EOI 2>>EOE != 0
module ;
EOI
-<stdin>:1:1: error: module declaration expected after leading module marker
+<stdin>:1:1: error: module declaration expected after global module fragment
EOE
: import-missing-semi