# HG changeset patch # User Adam Chlipala # Date 1325972959 18000 # Node ID a12186d99e4f771365ec597ba77886360feb9db0 # Parent 0577be31a4355fa959fc4c0b9b0820c1781be717 Finish function argument order-of-operations fix diff -r 0577be31a435 -r a12186d99e4f src/cjr_print.sml --- a/src/cjr_print.sml Sat Jan 07 15:56:22 2012 -0500 +++ b/src/cjr_print.sml Sat Jan 07 16:49:19 2012 -0500 @@ -1693,13 +1693,7 @@ | EFfiApp (m, x, es) => pFuncall env (m, x, es, NONE) | EApp (f, args) => let - fun default () = parenIf par (box [p_exp' true false env f, - string "(ctx,", - space, - p_list_sep (box [string ",", space]) (p_exp' false false env) args, - string ")"]) - - fun isSelf n = + fun getSig n = let val (_, t) = E.lookupENamed env n @@ -1707,8 +1701,51 @@ case #1 t of TFun (dom, t) => getSig (t, dom :: args) | _ => (args, t) + in + getSig (t, []) + end - val (argts, ret) = getSig (t, []) + fun default () = + case (#1 f, args) of + (ENamed n, _ :: _ :: _) => + let + val (args', ret) = getSig n + val args = ListPair.zip (args, args') + in + parenIf par (box [string "({", + newline, + p_list_sepi newline + (fn i => fn (e, t) => + box [p_typ env t, + space, + string ("arg" ^ Int.toString i), + space, + string "=", + space, + p_exp' false false env e, + string ";"]) + args, + newline, + p_exp' false false env f, + string "(ctx,", + space, + p_list_sepi (box [string ",", space]) + (fn i => fn _ => + string ("arg" ^ Int.toString i)) args, + string ");", + newline, + string "})"]) + end + | _ => + parenIf par (box [p_exp' true false env f, + string "(ctx,", + space, + p_list_sep (box [string ",", space]) (p_exp' false false env) args, + string ")"]) + + fun isSelf n = + let + val (argts, ret) = getSig n in parenIf par (box [string "({", newline, diff -r 0577be31a435 -r a12186d99e4f src/monoize.sml --- a/src/monoize.sml Sat Jan 07 15:56:22 2012 -0500 +++ b/src/monoize.sml Sat Jan 07 16:49:19 2012 -0500 @@ -1410,7 +1410,7 @@ [((L'.ERel 2, loc), (L'.TSource, loc)), ((L'.EJavaScript (L'.Source t, (L'.ERel 1, loc)), loc), - t)]), + (L'.TFfi ("Basis", "string"), loc))]), loc)), loc)), loc)), loc), fm) end