diff --git a/src/main.ml b/src/main.ml index 9b153aa301de7c8f1a92831a08c436b41b110f20..d17ab2bfcef42a223e510e28d015337fce4d3c71 100644 --- a/src/main.ml +++ b/src/main.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 26/04/2013 (at 15:43) by Erwan Jahier> *) +(* Time-stamp: <modified the 06/05/2013 (at 11:14) by Erwan Jahier> *) open Verbose open AstV6 @@ -100,13 +100,27 @@ let (gen_autotest_files : LicPrg.t -> Ident.idref option -> Lv6MainArgs.t -> uni let invars_name = List.map fst invars in let prg = prg^" ("^(String.concat "," locals_name)^") = "^name in let prg = prg^"("^(String.concat "," invars_name)^");\n "^ok^" = (" in - let var_to_equals (x,t) (y,_) = - match t with - | Data.Real -> x^"-"^y^" < 0.1 and "^ y^"-"^x^" < 0.1 " - | _ -> x^"="^y + let (var_to_equals : Soc.var -> Soc.var -> string list) = + fun (x,t) (y,_) -> + let rec aux x y t = + match t with + | Data.Real -> [x^"-"^y^" < 0.1 and "^ y^"-"^x^" < 0.1 "] + | Data.Array(t,n) -> + let res = ref [] in + for i = 0 to n-1 do + let istr = string_of_int i in + res := !res @ aux (x^"["^istr^"]") (y^"["^istr^"]") t + done; + !res + | Data.Struct(n,fl) -> + let do_field (fn,ft) = aux (x^"."^fn) (y^"."^fn) ft in + List.flatten (List.map do_field fl) + | _ -> [x^"="^y] + in + aux x y t in let prg = try prg^(String.concat " and\n \t\t " - (List.map2 var_to_equals locals outvars)) ^ ");\ntel;\n" + (List.flatten (List.map2 var_to_equals locals outvars)))^");\ntel;\n" with _ -> assert false in Lv6util.dump_entete oc; @@ -180,9 +194,11 @@ let main = ( print_compile_error (Lxm.last_made ()) "syntax error"; my_exit opt 1 | Unknown_var(lxm,id) -> - print_compile_error lxm ("unknown variable (" ^ (Ident.to_string id) ^")") + print_compile_error lxm ("unknown variable (" ^ (Ident.to_string id) ^")"); + my_exit opt 1 | Unknown_constant(lxm,str) -> - print_compile_error lxm ("unknown constant (" ^ str ^")") + print_compile_error lxm ("unknown constant (" ^ str ^")"); + my_exit opt 1 | Compile_error(lxm,msg) -> print_compile_error lxm msg; my_exit opt 1 diff --git a/test/lus2lic.sum b/test/lus2lic.sum index 8083bb85b533bca6658da7b89600aae0e07ae87d..ab02f1f659b38af4c57ea7c47cf2b38b6346fa50 100644 --- a/test/lus2lic.sum +++ b/test/lus2lic.sum @@ -1,4 +1,4 @@ -Test Run By jahier on Fri Apr 26 17:48:10 2013 +Test Run By jahier on Mon May 6 11:18:55 2013 Native configuration is i686-pc-linux-gnu === lus2lic tests === @@ -28,7 +28,7 @@ UNRESOLVED: Time out: ../utils/test_lus2lic_no_node should_work/assertion.lus PASS: ./lus2lic {-o /tmp/normal.lic should_work/normal.lus} PASS: ./lus2lic {-ec -o /tmp/normal.ec should_work/normal.lus} PASS: ./ec2c {-o /tmp/normal.c /tmp/normal.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/normal.lus +UNRESOLVED: Time out: ../utils/test_lus2lic_no_node should_work/normal.lus PASS: ./lus2lic {-o /tmp/nodeparam.lic should_work/nodeparam.lus} PASS: ./lus2lic {-ec -o /tmp/nodeparam.ec should_work/nodeparam.lus} PASS: ./ec2c {-o /tmp/nodeparam.c /tmp/nodeparam.ec} @@ -56,7 +56,7 @@ PASS: ../utils/test_lus2lic_no_node should_work/dep.lus PASS: ./lus2lic {-o /tmp/ELMU.lic should_work/ELMU.lus} PASS: ./lus2lic {-ec -o /tmp/ELMU.ec should_work/ELMU.lus} PASS: ./ec2c {-o /tmp/ELMU.c /tmp/ELMU.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ELMU.lus +UNRESOLVED: Time out: ../utils/test_lus2lic_no_node should_work/ELMU.lus PASS: ./lus2lic {-o /tmp/testPilote.lic should_work/testPilote.lus} PASS: ./lus2lic {-ec -o /tmp/testPilote.ec should_work/testPilote.lus} PASS: ./ec2c {-o /tmp/testPilote.c /tmp/testPilote.ec} @@ -172,7 +172,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/mm1.lic should_work/mm1.lus} PASS: ./lus2lic {-ec -o /tmp/mm1.ec should_work/mm1.lus} PASS: ./ec2c {-o /tmp/mm1.c /tmp/mm1.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/mm1.lus +PASS: ../utils/test_lus2lic_no_node should_work/mm1.lus PASS: ./lus2lic {-o /tmp/predef03.lic should_work/predef03.lus} PASS: ./lus2lic {-ec -o /tmp/predef03.ec should_work/predef03.lus} PASS: ./ec2c {-o /tmp/predef03.c /tmp/predef03.ec} @@ -180,7 +180,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/iter.lic should_work/iter.lus} PASS: ./lus2lic {-ec -o /tmp/iter.ec should_work/iter.lus} PASS: ./ec2c {-o /tmp/iter.c /tmp/iter.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/iter.lus +PASS: ../utils/test_lus2lic_no_node should_work/iter.lus PASS: ./lus2lic {-o /tmp/call05.lic should_work/call05.lus} PASS: ./lus2lic {-ec -o /tmp/call05.ec should_work/call05.lus} PASS: ./ec2c {-o /tmp/call05.c /tmp/call05.ec} @@ -238,7 +238,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/call04.lic should_work/call04.lus} PASS: ./lus2lic {-ec -o /tmp/call04.ec should_work/call04.lus} PASS: ./ec2c {-o /tmp/call04.c /tmp/call04.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call04.lus +PASS: ../utils/test_lus2lic_no_node should_work/call04.lus PASS: ./lus2lic {-o /tmp/bascule.lic should_work/bascule.lus} PASS: ./lus2lic {-ec -o /tmp/bascule.ec should_work/bascule.lus} PASS: ./ec2c {-o /tmp/bascule.c /tmp/bascule.ec} @@ -254,7 +254,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/mm22.lic should_work/mm22.lus} PASS: ./lus2lic {-ec -o /tmp/mm22.ec should_work/mm22.lus} PASS: ./ec2c {-o /tmp/mm22.c /tmp/mm22.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/mm22.lus +PASS: ../utils/test_lus2lic_no_node should_work/mm22.lus PASS: ./lus2lic {-o /tmp/X1.lic should_work/X1.lus} PASS: ./lus2lic {-ec -o /tmp/X1.ec should_work/X1.lus} PASS: ./ec2c {-o /tmp/X1.c /tmp/X1.ec} @@ -382,7 +382,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/calculs_max.lic should_work/calculs_max.lus} PASS: ./lus2lic {-ec -o /tmp/calculs_max.ec should_work/calculs_max.lus} PASS: ./ec2c {-o /tmp/calculs_max.c /tmp/calculs_max.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/calculs_max.lus +PASS: ../utils/test_lus2lic_no_node should_work/calculs_max.lus PASS: ./lus2lic {-o /tmp/testCA.lic should_work/testCA.lus} PASS: ./lus2lic {-ec -o /tmp/testCA.ec should_work/testCA.lus} PASS: ./ec2c {-o /tmp/testCA.c /tmp/testCA.ec} @@ -413,7 +413,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/bad_call03.lic should_work/bad_call03.lus} PASS: ./lus2lic {-ec -o /tmp/bad_call03.ec should_work/bad_call03.lus} PASS: ./ec2c {-o /tmp/bad_call03.c /tmp/bad_call03.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/bad_call03.lus +PASS: ../utils/test_lus2lic_no_node should_work/bad_call03.lus PASS: ./lus2lic {-o /tmp/onlyroll.lic should_work/onlyroll.lus} PASS: ./lus2lic {-ec -o /tmp/onlyroll.ec should_work/onlyroll.lus} PASS: ./ec2c {-o /tmp/onlyroll.c /tmp/onlyroll.ec} @@ -421,7 +421,7 @@ UNRESOLVED: Time out: ../utils/test_lus2lic_no_node should_work/onlyroll.lus PASS: ./lus2lic {-o /tmp/produitBool.lic should_work/produitBool.lus} PASS: ./lus2lic {-ec -o /tmp/produitBool.ec should_work/produitBool.lus} PASS: ./ec2c {-o /tmp/produitBool.c /tmp/produitBool.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/produitBool.lus +PASS: ../utils/test_lus2lic_no_node should_work/produitBool.lus PASS: ./lus2lic {-o /tmp/noeudsIndependants.lic should_work/noeudsIndependants.lus} PASS: ./lus2lic {-ec -o /tmp/noeudsIndependants.ec should_work/noeudsIndependants.lus} PASS: ./ec2c {-o /tmp/noeudsIndependants.c /tmp/noeudsIndependants.ec} @@ -441,7 +441,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/mapinf.lic should_work/mapinf.lus} PASS: ./lus2lic {-ec -o /tmp/mapinf.ec should_work/mapinf.lus} PASS: ./ec2c {-o /tmp/mapinf.c /tmp/mapinf.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/mapinf.lus +PASS: ../utils/test_lus2lic_no_node should_work/mapinf.lus PASS: ./lus2lic {-o /tmp/integrator.lic should_work/integrator.lus} PASS: ./lus2lic {-ec -o /tmp/integrator.ec should_work/integrator.lus} PASS: ./ec2c {-o /tmp/integrator.c /tmp/integrator.ec} @@ -453,7 +453,7 @@ PASS: ../utils/test_lus2lic_no_node should_work/nc4.lus PASS: ./lus2lic {-o /tmp/mm3.lic should_work/mm3.lus} PASS: ./lus2lic {-ec -o /tmp/mm3.ec should_work/mm3.lus} PASS: ./ec2c {-o /tmp/mm3.c /tmp/mm3.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/mm3.lus +PASS: ../utils/test_lus2lic_no_node should_work/mm3.lus PASS: ./lus2lic {-o /tmp/over2.lic should_work/over2.lus} PASS: ./lus2lic {-ec -o /tmp/over2.ec should_work/over2.lus} PASS: ./ec2c {-o /tmp/over2.c /tmp/over2.ec} @@ -652,7 +652,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/iterFibo.lic should_work/iterFibo.lus} PASS: ./lus2lic {-ec -o /tmp/iterFibo.ec should_work/iterFibo.lus} PASS: ./ec2c {-o /tmp/iterFibo.c /tmp/iterFibo.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/iterFibo.lus +PASS: ../utils/test_lus2lic_no_node should_work/iterFibo.lus PASS: ./lus2lic {-o /tmp/morel2.lic should_work/morel2.lus} PASS: ./lus2lic {-ec -o /tmp/morel2.ec should_work/morel2.lus} PASS: ./ec2c {-o /tmp/morel2.c /tmp/morel2.ec} @@ -708,7 +708,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/map_red_iter.lic should_work/map_red_iter.lus} PASS: ./lus2lic {-ec -o /tmp/map_red_iter.ec should_work/map_red_iter.lus} PASS: ./ec2c {-o /tmp/map_red_iter.c /tmp/map_red_iter.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/map_red_iter.lus +PASS: ../utils/test_lus2lic_no_node should_work/map_red_iter.lus PASS: ./lus2lic {-o /tmp/p.lic should_work/p.lus} PASS: ./lus2lic {-ec -o /tmp/p.ec should_work/p.lus} PASS: ./ec2c {-o /tmp/p.c /tmp/p.ec} @@ -756,7 +756,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/dependeur_struct.lic should_work/dependeur_struct.lus} PASS: ./lus2lic {-ec -o /tmp/dependeur_struct.ec should_work/dependeur_struct.lus} PASS: ./ec2c {-o /tmp/dependeur_struct.c /tmp/dependeur_struct.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/dependeur_struct.lus +UNRESOLVED: Time out: ../utils/test_lus2lic_no_node should_work/dependeur_struct.lus PASS: ./lus2lic {-o /tmp/minmax4_bis.lic should_work/minmax4_bis.lus} PASS: ./lus2lic {-ec -o /tmp/minmax4_bis.ec should_work/minmax4_bis.lus} PASS: ./ec2c {-o /tmp/minmax4_bis.c /tmp/minmax4_bis.ec} @@ -856,7 +856,7 @@ PASS: ../utils/test_lus2lic_no_node should_work/nc10.lus PASS: ./lus2lic {-o /tmp/triSel.lic should_work/triSel.lus} PASS: ./lus2lic {-ec -o /tmp/triSel.ec should_work/triSel.lus} PASS: ./ec2c {-o /tmp/triSel.c /tmp/triSel.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/triSel.lus +PASS: ../utils/test_lus2lic_no_node should_work/triSel.lus PASS: ./lus2lic {-o /tmp/s.lic should_work/s.lus} PASS: ./lus2lic {-ec -o /tmp/s.ec should_work/s.lus} PASS: ./ec2c {-o /tmp/s.c /tmp/s.ec} @@ -904,7 +904,7 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou PASS: ./lus2lic {-o /tmp/iterate.lic should_work/iterate.lus} PASS: ./lus2lic {-ec -o /tmp/iterate.ec should_work/iterate.lus} PASS: ./ec2c {-o /tmp/iterate.c /tmp/iterate.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/iterate.lus +PASS: ../utils/test_lus2lic_no_node should_work/iterate.lus PASS: ./lus2lic {-o /tmp/overload.lic should_work/overload.lus} PASS: ./lus2lic {-ec -o /tmp/overload.ec should_work/overload.lus} PASS: ./ec2c {-o /tmp/overload.c /tmp/overload.ec} @@ -920,7 +920,7 @@ PASS: ../utils/test_lus2lic_no_node should_work/EDGE.lus PASS: ./lus2lic {-o /tmp/call03.lic should_work/call03.lus} PASS: ./lus2lic {-ec -o /tmp/call03.ec should_work/call03.lus} PASS: ./ec2c {-o /tmp/call03.c /tmp/call03.ec} -FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call03.lus +PASS: ../utils/test_lus2lic_no_node should_work/call03.lus PASS: ./lus2lic {-o /tmp/count.lic should_work/count.lus} PASS: ./lus2lic {-ec -o /tmp/count.ec should_work/count.lus} PASS: ./ec2c {-o /tmp/count.c /tmp/count.ec} @@ -1045,8 +1045,8 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman === lus2lic Summary === -# of expected passes 814 -# of unexpected failures 152 +# of expected passes 828 +# of unexpected failures 135 # of unexpected successes 11 # of expected failures 37 -# of unresolved testcases 19 +# of unresolved testcases 22 diff --git a/test/should_work/access.lus b/test/should_work/access.lus index cb2d129f6bf6fa0c8a469454ebc42cf4a75e3c90..c11abc01728880ca0c49ec861329f71fa44b3daa 100644 --- a/test/should_work/access.lus +++ b/test/should_work/access.lus @@ -19,6 +19,8 @@ let ; tel +node access = quick_access<<int, 8, -1>>; + node quick_access_int8 = quick_access<<int, 8, -1>>; node quick_access_real8 = quick_access<<real, 8, -0.314e+1>>; diff --git a/test/should_work/testPilote.lus b/test/should_work/testPilote.lus index cfe411ea188ff7870ed08d0cb61255f19f0d3ac5..2e8e60ea0dedd81f68c586c6cf8409759fab39e5 100644 --- a/test/should_work/testPilote.lus +++ b/test/should_work/testPilote.lus @@ -1,7 +1,7 @@ package pilote provides -node pilote(Hpilote, semAutP : bool; -- +node testPilote(Hpilote, semAutP : bool; -- -- HupdatePiloteData : bool; dataBoiteCP : int) returns (--semMemTakeP, @@ -16,7 +16,7 @@ returns (--semMemTakeP, body -node pilote(Hpilote, semAutP : bool; -- +node testPilote(Hpilote, semAutP : bool; -- -- HupdatePiloteData : bool; dataBoiteCP : int) returns (--semMemTakeP, diff --git a/utils/test_lus2lic_no_node b/utils/test_lus2lic_no_node index ca3baadb96a579a3b51c8bbe0c904584f0630e28..4a9b3790a697ce0db185a7d109d585d45c24c1e5 100755 --- a/utils/test_lus2lic_no_node +++ b/utils/test_lus2lic_no_node @@ -24,7 +24,7 @@ cat $lustre_file >> $_oracle; if -./lus2lic $_oracle -n $oracle -lv4 -eei -en --no-prefix -o lv4$_oracle ; +./lus2lic $_oracle -n $oracle -lv4 -eei -en --no-prefix -o lv4$_oracle; then echo "lus2lic -lv4 done" else