[pypy-commit] lang-scheme default: Improve error message of WrongArgsNumber: Add actual and expected values

boemmels noreply at buildbot.pypy.org
Fri Feb 17 23:54:43 CET 2012


Author: Juergen Boemmels <boemmels at web.de>
Branch: 
Changeset: r40:dc37076bac9a
Date: 2012-02-17 23:54 +0100
http://bitbucket.org/pypy/lang-scheme/changeset/dc37076bac9a/

Log:	Improve error message of WrongArgsNumber: Add actual and expected
	values

diff --git a/scheme/object.py b/scheme/object.py
--- a/scheme/object.py
+++ b/scheme/object.py
@@ -13,7 +13,11 @@
 
 class WrongArgsNumber(SchemeException):
     def __str__(self):
-        return "Wrong number of args"
+        if len(self.args) == 2:
+            return ("Wrong number of args. Got: %d, expected: %s" %
+                (self.args[0], self.args[1]))
+        else:
+            return "Wrong number of args."
 
 class WrongArgType(SchemeException):
     def __str__(self):
diff --git a/scheme/procedure.py b/scheme/procedure.py
--- a/scheme/procedure.py
+++ b/scheme/procedure.py
@@ -12,7 +12,7 @@
     def procedure(self, ctx, lst):
         if len(lst) == 0:
             if self.default_result is None:
-                raise WrongArgsNumber()
+                raise WrongArgsNumber(len(lst), ">1")
 
             return self.default_result
 
@@ -155,7 +155,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) != 2:
-            raise WrongArgsNumber()
+            raise WrongArgsNumber(len(lst), 2)
         
         w_car = lst[0]
         w_cdr = lst[1]
@@ -183,7 +183,7 @@
 class CarCdrCombination(W_Procedure):
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
         w_pair = lst[0]
         return self.do_oper(w_pair)
 
@@ -352,8 +352,8 @@
 
     def procedure_tr(self, ctx, lst):
         if len(lst) != 2:
-            raise WrongArgsNumber
-
+            raise WrongArgsNumber(len(lst), 2)
+        
         (w_procedure, w_lst) = lst
         if not isinstance(w_procedure, W_Procedure):
             #print w_procedure.to_repr(), "is not a procedure"
@@ -376,7 +376,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
 
         w_promise = lst[0]
         if not isinstance(w_promise, W_Promise):
@@ -389,7 +389,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
         w_inlist = lst[0]
         w_outlist = w_nil
         while w_inlist is not w_nil:
@@ -405,7 +405,7 @@
 
     def procedure_tr(self, ctx, lst):
         if len(lst) < 2:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), ">2")
 
         w_proc = lst[0]
         if not isinstance(w_proc, W_Procedure):
@@ -452,7 +452,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) < 1 or len(lst) > 2:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), "1-2")
 
         w_number = lst[0]
         if not isinstance(w_number, W_Integer):
@@ -473,7 +473,7 @@
 class AssocX(W_Procedure):
     def procedure(self, ctx, lst):
         if len(lst) != 2:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 2)
 
         (w_obj, w_alst) = lst
 
@@ -522,7 +522,7 @@
 class MemX(W_Procedure):
     def procedure(self, ctx, lst):
         if len(lst) != 2:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 2)
 
         (w_obj, w_lst) = lst
 
@@ -565,7 +565,7 @@
 class EquivalnecePredicate(W_Procedure):
     def procedure(self, ctx, lst):
         if len(lst) != 2:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 2)
         (a, b) = lst
         return W_Boolean(self.predicate(a, b))
 
@@ -596,7 +596,7 @@
 class PredicateNumber(W_Procedure):
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
 
         w_obj = lst[0]
         if not isinstance(w_obj, W_Number):
@@ -614,7 +614,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
 
         w_obj = lst[0]
         if not isinstance(w_obj, W_Number):
@@ -688,7 +688,7 @@
 class TypePredicate(W_Procedure):
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
 
         return W_Boolean(self.predicate(lst[0]))
 
@@ -748,7 +748,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) != 1:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 1)
 
         w_bool = lst[0]
         if w_bool.to_boolean():
@@ -770,7 +770,7 @@
             (obj, port) = lst
             raise NotImplementedError
         else:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), "1-2")
 
         print obj.to_string(),
         return w_undefined
@@ -780,7 +780,7 @@
 
     def procedure(self, ctx, lst):
         if len(lst) != 0:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), 0)
 
         print
         return w_undefined
@@ -795,7 +795,7 @@
             (obj, port) = lst
             raise NotImplementedError
         else:
-            raise WrongArgsNumber
+            raise WrongArgsNumber(len(lst), "1-2")
 
         print obj.to_repr(),
         return w_undefined


More information about the pypy-commit mailing list