diff options
author | dos-reis <gdr@axiomatics.org> | 2008-01-22 00:25:02 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2008-01-22 00:25:02 +0000 |
commit | d0bef3fbe5196f2ac1211af52cc48d7d34187d3d (patch) | |
tree | 87976cf8eb431957d78b526f5200dffde52725d9 /src/testsuite | |
parent | 1fec2e3a2ab2f97db90e18f03ec1c5df09a306b7 (diff) | |
download | open-axiom-d0bef3fbe5196f2ac1211af52cc48d7d34187d3d.tar.gz |
Apply patch byStephen Wilson <<wilsons@multiboard.com>
Fix AW/370
* interp/compiler.boot (compWithMappingMode): Consult current
environment to decide which variabes are free.
* testsuite/compiler/cwmm-test.spad: New.
Diffstat (limited to 'src/testsuite')
-rw-r--r-- | src/testsuite/compiler/cwmm-test.spad | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/testsuite/compiler/cwmm-test.spad b/src/testsuite/compiler/cwmm-test.spad new file mode 100644 index 00000000..ab820d18 --- /dev/null +++ b/src/testsuite/compiler/cwmm-test.spad @@ -0,0 +1,79 @@ +++ Contributed by Stephen Wilson. + +)abbrev domain CWMMT CompWithMappingModeTest + +CompWithMappingModeTest() : Exports == Implementation where + + Exports == with + runTests : () -> Boolean + + Implementation == add + + REC ==> Record(field1 : Integer, field2 : String) + UN ==> Union(rec : REC, str : String) + + -- The following function accepts a map as argument to test + -- compWithMappingMode. + mapper(fn : Integer -> Boolean, n: Integer) : Boolean == fn n + + -- We use the following as a target for currying and to pass to + -- mapper above. + pred(x: Integer, y: Integer) : Boolean == + x < y => true + true + + test1(x : Integer) : Boolean == + r : REC := [1, ""] + mapper(pred(r.field1, #1), 1) + + test2(x : Integer) : Boolean == + r : REC := [1, ""] + i : Integer := 1 + mapper(pred(r.field1 + x, #1), 1) + + test3(x : Integer) : Boolean == + r : REC := [1, ""] + i : Integer := 1 + mapper(pred(r.field1 + i, #1), 1) + + test4(x : Integer) : Boolean == + r : REC := [1, ""] + i : Integer := 1 + mapper(pred((r.field1 + min(#(r.field2), i)), #1), 1) + + test5(x : Integer) : Boolean == + r : REC := [1, ""] + i : Integer := 1 + mapper(pred((r.field1 + min(#(r.field2), i + x)), #1), 1) + + test6(x : Integer) : Boolean == + u : UN := [[1, ""]$REC] + mapper(pred(u.rec.field1, #1), 1) + + test7(x : Integer) : Boolean == + u : UN := [[1, ""]$REC] + i : Integer := 1 + mapper(pred(u.rec.field1 + x, #1), 1) + + test8(x : Integer) : Boolean == + u : UN := [[1, ""]$REC] + i : Integer := 1 + mapper(pred(u.rec.field1 + i, #1), 1) + + test9(x : Integer) : Boolean == + u : UN := [[1, ""]$REC] + i : Integer := 1 + mapper(pred((u.rec.field1 + min(#(u.rec.field2), i)), #1), 1) + + test10(x : Integer) : Boolean == + u : UN := [[1, ""]$REC] + i : Integer := 1 + mapper(pred((u.rec.field1 + min(#(u.rec.field2), i + x)), #1), 1) + + runTests() : Boolean == + test1(1) and test2(1) and test3(1) _ + and test4(1) and test5(1) _ + and test6(1) and test7(1) _ + and test8(1) and test9(1) _ + and test10(1) + |