aboutsummaryrefslogtreecommitdiff
path: root/tests/cc/modules
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2023-12-08 07:26:50 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2023-12-08 07:26:50 +0200
commit6b542899c41f8dafda07c01105ba0616984ec791 (patch)
treed1a15a2f80c66d6a4f0aa87652bd731312ab5dd7 /tests/cc/modules
parentf59ecce68b1f274c212a36a07140dba8005e57d9 (diff)
Re-enable modules tests for MSVC and drop workarounds for old bugs
Diffstat (limited to 'tests/cc/modules')
-rw-r--r--tests/cc/modules/common.testscript3
-rw-r--r--tests/cc/modules/modules.testscript17
2 files changed, 13 insertions, 7 deletions
diff --git a/tests/cc/modules/common.testscript b/tests/cc/modules/common.testscript
index f2e107f..801cf02 100644
--- a/tests/cc/modules/common.testscript
+++ b/tests/cc/modules/common.testscript
@@ -25,7 +25,8 @@ cxx.features.symexport = true
# Note: there are some issues with enabling modules in Apple Clang 15 so
# for now we only test vanilla Clang.
#
-if ($cxx.id == 'gcc' || \
+if ($cxx.id == 'gcc' || \
+ $cxx.id == 'msvc' || \
($cxx.id == 'clang' && $cxx.version.major >= 16))
cxx.features.modules = true
diff --git a/tests/cc/modules/modules.testscript b/tests/cc/modules/modules.testscript
index 7e860fd..c286c1f 100644
--- a/tests/cc/modules/modules.testscript
+++ b/tests/cc/modules/modules.testscript
@@ -205,8 +205,6 @@ $* test clean <<EOI
:
: Test global module fragment/leading module marker (module;).
:
-if ($cxx.id != 'msvc') # Disabled for MSVC due to issue 845845. @@ TMP revise
-{
cat <<EOI >=g.hxx;
void g ();
EOI
@@ -220,7 +218,6 @@ ln -s ../core.cxx ../driver.cxx ./;
$* test clean <<EOI
exe{test}: cxx{driver} {mxx cxx}{core}
EOI
-}
: re-export
:
@@ -371,20 +368,28 @@ cat <<EOI >=core.mxx;
export __symexport int f (int);
- __symexport int g_impl (int i) {return i - 1;}
+ __symexport int g_impl (int i);
export __symexport inline int g (int i) {return g_impl (i);}
+
+ export __symexport int v1 = 1;
+ export __symexport extern int v2;
EOI
ln -s ../core.cxx core-f.cxx;
cat <<EOI >=core-g.cxx;
module foo.core;
int g_impl (int i) {return i - 1;}
+ int v = 1;
+ EOI
+cat <<EOI >=core-v.cxx;
+ module foo.core;
+ int v2 = -1;
EOI
cat <<EOI >=driver.cxx;
import foo.core;
- int main (int argc, char*[]) {return f (argc) + g (argc);}
+ int main (int argc, char*[]) {return f (argc) + g (argc) + v1 + v2;}
EOI
$* test clean <<EOI
./: lib{foo} exe{test} # Full build.
exe{test}: cxx{driver} lib{foo}
- lib{foo}: mxx{core} cxx{core-f} # @@ VC: core-g
+ lib{foo}: mxx{core} cxx{core-g core-f core-v}
EOI