From 11398e77f984b721eda088cec034e7e9af7528d4 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Fri, 25 Nov 2011 09:17:30 -0500 Subject: [PATCH] icode: add automatic tests for virtual type parameters in methods Tests are added by the method generate_empty_iroutine of MMSignature Not that tests are systematic even in the safe case (call on self). Some unsafe places remain, like parameters in closure definitions or in unsafe assignments. test_variance_params is updated to reflect the fix. Signed-off-by: Jean Privat --- src/icode/icode_builder.nit | 9 +++++++++ tests/sav/test_variance_param_alt1.fail | 18 ------------------ tests/sav/test_variance_param_alt1.sav | 4 ++++ tests/sav/test_variance_param_alt2.fail | 18 ------------------ tests/sav/test_variance_param_alt2.sav | 5 +++++ tests/sav/test_variance_param_alt3.fail | 18 ------------------ tests/sav/test_variance_param_alt3.sav | 7 +++++++ tests/sav/test_variance_param_alt4.fail | 18 ------------------ tests/sav/test_variance_param_alt4.sav | 7 +++++++ tests/sav/test_variance_param_alt5.fail | 18 ------------------ tests/sav/test_variance_param_alt5.sav | 8 ++++++++ tests/sav/test_variance_param_alt6.fail | 18 ------------------ tests/sav/test_variance_param_alt6.sav | 13 +++++++++++++ 13 files changed, 53 insertions(+), 108 deletions(-) delete mode 100644 tests/sav/test_variance_param_alt1.fail create mode 100644 tests/sav/test_variance_param_alt1.sav delete mode 100644 tests/sav/test_variance_param_alt2.fail create mode 100644 tests/sav/test_variance_param_alt2.sav delete mode 100644 tests/sav/test_variance_param_alt3.fail create mode 100644 tests/sav/test_variance_param_alt3.sav delete mode 100644 tests/sav/test_variance_param_alt4.fail create mode 100644 tests/sav/test_variance_param_alt4.sav delete mode 100644 tests/sav/test_variance_param_alt5.fail create mode 100644 tests/sav/test_variance_param_alt5.sav delete mode 100644 tests/sav/test_variance_param_alt6.fail create mode 100644 tests/sav/test_variance_param_alt6.sav diff --git a/src/icode/icode_builder.nit b/src/icode/icode_builder.nit index c50ab6a..7f37b75 100644 --- a/src/icode/icode_builder.nit +++ b/src/icode/icode_builder.nit @@ -244,6 +244,14 @@ redef class MMSignature end iroutine.closure_decls = clos end + # Add automatic test for virtual types + var icb = new ICodeBuilder(recv.mmmodule, iroutine) + for i in [0..arity[ do + var t = self[i] + if t isa MMVirtualType then + icb.add_type_cast(args[i+1], t) + end + end return iroutine end @@ -268,6 +276,7 @@ redef class MMSignature end iroutine.closure_decls = clos end + # TODO: add automatic test for virtual types? return iroutine end end diff --git a/tests/sav/test_variance_param_alt1.fail b/tests/sav/test_variance_param_alt1.fail deleted file mode 100644 index 329511a..0000000 --- a/tests/sav/test_variance_param_alt1.fail +++ /dev/null @@ -1,18 +0,0 @@ -AB5 -B5 -5 -AB5 -5 -5 -5 -5 -5 -B5 -5 -5 -5 -5 -5 -5 -5 -5 diff --git a/tests/sav/test_variance_param_alt1.sav b/tests/sav/test_variance_param_alt1.sav new file mode 100644 index 0000000..92b4d63 --- /dev/null +++ b/tests/sav/test_variance_param_alt1.sav @@ -0,0 +1,4 @@ +AB5 +B5 +5 +Cast failed (alt/test_variance_param_alt1.nit) diff --git a/tests/sav/test_variance_param_alt2.fail b/tests/sav/test_variance_param_alt2.fail deleted file mode 100644 index 4ac4e3c..0000000 --- a/tests/sav/test_variance_param_alt2.fail +++ /dev/null @@ -1,18 +0,0 @@ -AB5 -B5 -5 -B5 -B5 -5 -5 -5 -5 -B5 -5 -5 -5 -5 -5 -5 -5 -5 diff --git a/tests/sav/test_variance_param_alt2.sav b/tests/sav/test_variance_param_alt2.sav new file mode 100644 index 0000000..fdbf394 --- /dev/null +++ b/tests/sav/test_variance_param_alt2.sav @@ -0,0 +1,5 @@ +AB5 +B5 +5 +B5 +Cast failed (alt/test_variance_param_alt2.nit) diff --git a/tests/sav/test_variance_param_alt3.fail b/tests/sav/test_variance_param_alt3.fail deleted file mode 100644 index fab8897..0000000 --- a/tests/sav/test_variance_param_alt3.fail +++ /dev/null @@ -1,18 +0,0 @@ -AB5 -B5 -5 -B5 -5 -5 -A5 -5 -5 -B5 -5 -5 -5 -5 -5 -5 -5 -5 diff --git a/tests/sav/test_variance_param_alt3.sav b/tests/sav/test_variance_param_alt3.sav new file mode 100644 index 0000000..f0fdbc0 --- /dev/null +++ b/tests/sav/test_variance_param_alt3.sav @@ -0,0 +1,7 @@ +AB5 +B5 +5 +B5 +5 +5 +Cast failed (alt/test_variance_param_alt3.nit) diff --git a/tests/sav/test_variance_param_alt4.fail b/tests/sav/test_variance_param_alt4.fail deleted file mode 100644 index bd44b47..0000000 --- a/tests/sav/test_variance_param_alt4.fail +++ /dev/null @@ -1,18 +0,0 @@ -AB5 -B5 -5 -B5 -5 -5 -B5 -5 -5 -B5 -5 -5 -5 -5 -5 -5 -5 -5 diff --git a/tests/sav/test_variance_param_alt4.sav b/tests/sav/test_variance_param_alt4.sav new file mode 100644 index 0000000..3e39281 --- /dev/null +++ b/tests/sav/test_variance_param_alt4.sav @@ -0,0 +1,7 @@ +AB5 +B5 +5 +B5 +5 +5 +Cast failed (alt/test_variance_param_alt4.nit) diff --git a/tests/sav/test_variance_param_alt5.fail b/tests/sav/test_variance_param_alt5.fail deleted file mode 100644 index 7d83e9e..0000000 --- a/tests/sav/test_variance_param_alt5.fail +++ /dev/null @@ -1,18 +0,0 @@ -AB5 -B5 -5 -B5 -5 -5 -5 -B5 -5 -B5 -5 -5 -5 -5 -5 -5 -5 -5 diff --git a/tests/sav/test_variance_param_alt5.sav b/tests/sav/test_variance_param_alt5.sav new file mode 100644 index 0000000..88c3c73 --- /dev/null +++ b/tests/sav/test_variance_param_alt5.sav @@ -0,0 +1,8 @@ +AB5 +B5 +5 +B5 +5 +5 +5 +Cast failed (alt/test_variance_param_alt5.nit) diff --git a/tests/sav/test_variance_param_alt6.fail b/tests/sav/test_variance_param_alt6.fail deleted file mode 100644 index 7494b82..0000000 --- a/tests/sav/test_variance_param_alt6.fail +++ /dev/null @@ -1,18 +0,0 @@ -AB5 -B5 -5 -B5 -5 -5 -5 -5 -5 -B5 -5 -5 -B5 -5 -5 -5 -5 -5 diff --git a/tests/sav/test_variance_param_alt6.sav b/tests/sav/test_variance_param_alt6.sav new file mode 100644 index 0000000..eab7e90 --- /dev/null +++ b/tests/sav/test_variance_param_alt6.sav @@ -0,0 +1,13 @@ +AB5 +B5 +5 +B5 +5 +5 +5 +5 +5 +B5 +5 +5 +Cast failed (alt/test_variance_param_alt6.nit) -- 1.7.9.5