From a14b9bc18431c6aed8441261d28b6ff20bd25935 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 11 Apr 2019 14:44:32 +0200 Subject: Initial take on header unit and include translation support --- tests/cc/modules/testscript | 377 -------------------------------------------- 1 file changed, 377 deletions(-) delete mode 100644 tests/cc/modules/testscript (limited to 'tests/cc/modules/testscript') diff --git a/tests/cc/modules/testscript b/tests/cc/modules/testscript deleted file mode 100644 index b5b94c1..0000000 --- a/tests/cc/modules/testscript +++ /dev/null @@ -1,377 +0,0 @@ -# file : tests/cc/modules/testscript -# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd -# license : MIT; see accompanying LICENSE file - -crosstest = false -test.arguments = config.cxx="$recall($cxx.path)" - -.include ../../common.testscript - -+cat <+build/bootstrap.build -using test -EOI - -+cat <=build/root.build -cxx.std = experimental - -cxx.features.symexport = true - -# Force modules. -# -cxx.features.modules = true - -using cxx - -# We forced modules but for VC we need at least 15u5 (19.12). So "unforce" -# them in this case. -# -if ($cxx.id == 'msvc' && $cxx.version.major == 19 && $cxx.version.minor < 12) - cxx.features.modules = false - -hxx{*}: extension = hxx -mxx{*}: extension = mxx -cxx{*}: extension = cxx - -if ($cxx.target.class == 'windows') - bmis{*}: cxx.poptions += '-DLIBFOO_EXPORT=__declspec(dllexport)' - -exe{*}: test = true -EOI - -# Determine if we have module support. -# -+$* noop <=core.mxx -#ifndef LIBFOO_EXPORT -# define LIBFOO_EXPORT -#endif - -export module foo.core; -export LIBFOO_EXPORT int f (int); -EOI - -+cat <=core.cxx -module foo.core; -int f (int i) {return i - 1;} -EOI - -+cat <=driver.cxx -import foo.core; -int main (int argc, char*[]) {return f (argc);} -EOI - -: bmi-combined -: -: Test combined interface/implementation unit specified as bmi{}. -: -cp ../core.mxx ./ && cat >+core.mxx <+core.mxx <=core.mxx - export module bar.core; - EOI - - : separator - : - : Test separator equivalence. - : - ln -s ../../core.mxx foo-core.mxx; - ln -s ../core.mxx ../../core.cxx ../../driver.cxx ./; - $* test clean <'exe{test}: cxx{driver core} mxx{core foo-core}' - - : case - : - : Test case-insensitivity and case-change as a separator. - : - ln -s ../../core.mxx FooCore.mxx; - ln -s ../core.mxx ../../core.cxx ../../driver.cxx ./; - $* test clean <'exe{test}: cxx{driver core} mxx{core FooCore}' - - : dir - : - : Test subdirectory. - : - mkdir foo; - ln -s ../../core.mxx foo/core.mxx; - ln -s ../core.mxx ../../core.cxx ../../driver.cxx ./; - $* test clean <'exe{test}: cxx{driver core} mxx{core} foo/mxx{core}' - - : explicit - : - : Explicit module name. - : - ln -s ../../core.mxx baz.mxx; - ln -s ../core.mxx ../../core.cxx ../../driver.cxx ./; - $* test clean <>EOE != 0 - driver.cxx: error: unable to resolve module foo.core - EOE - -: misguessed -: -ln -s ../core.mxx ./; -cat <'import bar.core;' >=driver.cxx; -$* test &*.d &?*.ii <'exe{test}: cxx{driver} mxx{core}' 2>>EOE != 0 - driver.cxx: error: failed to correctly guess module name from mxx{core} - info: guessed: bar.core - info: actual: foo.core - info: consider adjusting module interface file names or - info: consider specifying module name with cxx.module_name - EOE - -: library -: -: Test importing a module from a library. -: -ln -s ../core.mxx ../core.cxx ../driver.cxx ./; -$* test clean <=g.hxx; -void g (); -EOI -cat <=core.mxx; -#if __cpp_modules >= 201804 -module; -#endif - -#include "g.hxx" -EOI -cat <<<../core.mxx >+core.mxx; -ln -s ../core.cxx ../driver.cxx ./; -$* test clean <=base.mxx - export module foo.base; - export import foo.core; - EOI - - +cat <=extra.mxx - #ifndef LIBFOO_EXPORT - # define LIBFOO_EXPORT - #endif - - export module foo.extra; - - export import foo.base; // Note: cannot be combined with the below. - - export - { - // VC appears to require dll-export of inline functions. - // - LIBFOO_EXPORT inline int g (int i) {return i != 0 ? i : -1;} - } - EOI - - +cat <=foo.mxx - export module foo; - - export import foo.core; - export import foo.base; - export import foo.extra; - EOI - - : basic - : - ln -s ../base.mxx ../../core.mxx ../../core.cxx ./; - cat <=driver.cxx; - import foo.base; - int main (int argc, char*[]) {return f (argc);} - EOI - $* test clean <'exe{test}: cxx{driver core} mxx{core base}' - - : recursive - : - ln -s ../base.mxx ../extra.mxx ../../core.mxx ../../core.cxx ./; - cat <=driver.cxx; - import foo.extra; - int main (int argc, char*[]) {return f (g (argc));} - EOI - $* test clean <'exe{test}: cxx{driver core} mxx{core base extra}' - - : duplicate - : - ln -s ../base.mxx ../extra.mxx ../foo.mxx ../../core.mxx ../../core.cxx ./; - cat <=driver.cxx; - import foo; - int main (int argc, char*[]) {return f (g (argc));} - EOI - $* test clean <'exe{test}: cxx{driver core} mxx{core base extra foo}' - - : library - : - ln -s ../base.mxx ../extra.mxx ../foo.mxx ../../core.mxx ../../core.cxx ./; - cat <=driver.cxx; - import foo; - int main (int argc, char*[]) {return f (g (argc));} - EOI - $* test clean <=base.mxx - export module foo.base; - import foo.core; - export int g (int i) {return f (i);} - EOI - - +cat <=extra.mxx - export module foo.extra; - import foo.base; - export int h (int i) {return g (i);} - EOI - - : basic - : - ln -s ../base.mxx ../../core.mxx ../../core.cxx ./; - cat <=driver.cxx; - import foo.base; - int main (int argc, char*[]) {return g (argc);} - EOI - $* test clean <'exe{test}: cxx{driver core} mxx{core base}' - - : recursive - : - ln -s ../base.mxx ../extra.mxx ../../core.mxx ../../core.cxx ./; - cat <=driver.cxx; - import foo.extra; - int main (int argc, char*[]) {return h (argc);} - EOI - $* test clean <'exe{test}: cxx{driver core} mxx{core base extra}' -} - -: resolve-change -: -: Test detection of module name to BMI resolution change. -: -ln -s ../core.mxx ../core.cxx ../driver.cxx ./; -cat <=foo-core.mxx; - export module foo.core; - export inline int f (int i) {return i - 2;} - EOI -$* update <>EOE; - exe{test}: cxx{driver} {mxx}{foo-core} - exe{test}: test.arguments = two - EOI - c++ cxx{driver} - ld exe{test} - test exe{test} - EOE -$* test clean <=core.mxx; - export module foo.core; - - export __symexport int f (int); - - __symexport int g_impl (int i) {return i - 1;} - export __symexport inline int g (int i) {return g_impl (i);} - EOI -ln -s ../core.cxx core-f.cxx; -cat <=core-g.cxx; - module foo.core; - int g_impl (int i) {return i - 1;} - EOI -cat <=driver.cxx; - import foo.core; - int main (int argc, char*[]) {return f (argc) + g (argc);} - EOI -$* test clean <