From 6a2d1e3062964fc16cfbc43bc69284f854c35dca Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 18 Nov 2020 08:00:16 +0200 Subject: Handle C++20 module partitions in scanner --- libbuild2/cc/parser+module.test.testscript | 51 ++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 10 deletions(-) (limited to 'libbuild2/cc/parser+module.test.testscript') diff --git a/libbuild2/cc/parser+module.test.testscript b/libbuild2/cc/parser+module.test.testscript index e4ec139..5afb0b1 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 +export module foo; +EOI + +: module-impl +: +$* <>EOI +module foo; +EOI + +: module-iface-part +: +$* <>EOI +export module foo:part; +EOI + +: module-impl-part +: +$* <>EOI +module foo.bar:part.sub; +EOI + : import : $* <>EOI @@ -23,16 +47,12 @@ import ; __import "/usr/include/stdio.h"; EOI -: module-implementation +: import-part : $* <>EOI module foo; -EOI - -: module-interface -: -$* <>EOI -export module foo; +import :part; +import :part.sub; EOI : export-imported @@ -54,6 +74,7 @@ export import(*a); import::inner xi = {}; ::import ; class import; +import ::x; EOI : non-module @@ -72,12 +93,12 @@ EOI : attribute : $* <>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 @@ -92,6 +113,16 @@ import foo; import bar.baz; EOO +: part-out-purview +: +$* <>EOE != 0 +module; +import :part +module foo; +EOI +:2:8: error: partition importation out of module purview +EOE + : brace-missing : $* <>EOE @@ -125,7 +156,7 @@ EOE $* <>EOE != 0 module ; EOI -:1:1: error: module declaration expected after leading module marker +:1:1: error: module declaration expected after global module fragment EOE : import-missing-semi -- cgit v1.1