# file : build2/cc/parser+module.test.testscript # copyright : Copyright (c) 2014-2019 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file # Test C++ module constructs. # # NOTE: currently header unit imports don't produce anything. # : import : $* <>EOI import foo; import foo.bar; import foo.bar.baz; EOI : import-header : $* <; __import "/usr/include/stdio.h"; EOI : module-implementation : $* <>EOI module foo; EOI : module-interface : $* <>EOI export module foo; EOI : export-imported : $* <>EOO export import foo; export import "foo.h"; export import ; EOI export import foo; EOO : non-module : $* <>EOO import foo [[export({import})]]; import "foo.h" [[export({import})]]; module bar [[module({module})]]; EOI import foo; module bar; EOO : import-duplicate : $* <>EOO import foo; import bar.baz; import foo; import bar . baz; EOI import foo; import bar.baz; EOO : brace-missing : $* <>EOE != 0 export { class foo { //}; module foo; } EOI stdin:8:1: error: {}-imbalance detected EOE : brace-stray : $* <>EOE != 0 export { class foo { };} } module foo; EOI stdin:6:1: error: {}-imbalance detected EOE : import-missing-name : $* <>EOE != 0 import ; EOI stdin:1:8: error: module or header name expected instead of ';' EOE : module-missing-name : $* <>EOE != 0 module ; EOI stdin:1:1: error: module declaration expected after leading module marker EOE : import-missing-semi : $* <>EOE != 0 import foo EOI stdin:2:1: error: ';' expected instead of EOE : module-missing-semi : $* <>EOE != 0 export module foo EOI stdin:2:1: error: ';' expected instead of EOE : import-missing-header : $* <>EOE != 0 import ' expected after header name EOE