Author: Juergen Boemmels <boemm...@web.de> Branch: Changeset: r38:2f31b68cba35 Date: 2012-01-09 22:39 +0100 http://bitbucket.org/pypy/lang-scheme/changeset/2f31b68cba35/
Log: Bugfix, apply evaluated it's argument twice. diff --git a/scheme/object.py b/scheme/object.py --- a/scheme/object.py +++ b/scheme/object.py @@ -625,7 +625,7 @@ w_iter = w_list while w_iter is not w_nil: if not isinstance(w_iter, W_Pair): - raise WrongArg(w_list, "List") + raise WrongArgType(w_list, "List") lst.append(w_iter.car) w_iter = w_iter.cdr diff --git a/scheme/procedure.py b/scheme/procedure.py --- a/scheme/procedure.py +++ b/scheme/procedure.py @@ -3,7 +3,7 @@ W_Number, W_Real, W_Integer, W_List, W_Character, W_Vector, \ Body, W_Procedure, W_String, W_Promise, plst2lst, w_undefined, \ SchemeSyntaxError, SchemeQuit, WrongArgType, WrongArgsNumber, \ - w_nil, w_true, w_false + w_nil, w_true, w_false, lst2plst ## # operations @@ -360,7 +360,7 @@ #print w_lst.to_repr(), "is not a list" raise WrongArgType(w_lst, "List") - return w_procedure.call_tr(ctx, w_lst) + return w_procedure.procedure_tr(ctx, lst2plst(w_lst)) class Quit(W_Procedure): _symbol_name = "quit" diff --git a/scheme/test/test_eval.py b/scheme/test/test_eval.py --- a/scheme/test/test_eval.py +++ b/scheme/test/test_eval.py @@ -817,6 +817,10 @@ assert w_result.to_number() == 64 assert eval_(ctx, "(apply + '())").to_number() == 0 + + w_result = eval_(ctx, "(apply list '((+ 2 3) (* 3 4)))") + assert w_result.equal(parse_("((+ 2 3) (* 3 4))")) + py.test.raises(WrongArgsNumber, eval_, ctx, "(apply 1)") py.test.raises(WrongArgType, eval_, ctx, "(apply 1 '(1))") py.test.raises(WrongArgType, eval_, ctx, "(apply + 42)") _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit