[pypy-commit] pypy improve-errors-again2: (Edd, Ronan) Fix some failing signature tests.
vext01
noreply at buildbot.pypy.org
Fri Aug 30 16:45:52 CEST 2013
Author: Edd Barrett <vext01 at gmail.com>
Branch: improve-errors-again2
Changeset: r66664:a556e4d47430
Date: 2013-08-30 14:33 +0100
http://bitbucket.org/pypy/pypy/changeset/a556e4d47430/
Log: (Edd, Ronan) Fix some failing signature tests.
Define a new SignatureError exception which subclasses
AnnotatorError. Revise tests.
diff --git a/rpython/annotator/signature.py b/rpython/annotator/signature.py
--- a/rpython/annotator/signature.py
+++ b/rpython/annotator/signature.py
@@ -5,7 +5,7 @@
from rpython.annotator.model import SomeBool, SomeInteger, SomeString,\
SomeFloat, SomeList, SomeDict, s_None, \
SomeObject, SomeInstance, SomeTuple, lltype_to_annotation,\
- unionof, SomeUnicodeString, SomeType
+ unionof, SomeUnicodeString, SomeType, AnnotatorError
from rpython.annotator.listdef import ListDef
from rpython.annotator.dictdef import DictDef
@@ -118,25 +118,28 @@
else:
args_s.append(annotation(argtype, bookkeeper=funcdesc.bookkeeper))
if len(inputcells) != len(args_s):
- raise Exception("%r: expected %d args, got %d" % (funcdesc,
+ raise SignatureError("%r: expected %d args, got %d" % (funcdesc,
len(args_s),
len(inputcells)))
for i, (s_arg, s_input) in enumerate(zip(args_s, inputcells)):
s_input = unionof(s_input, s_arg)
if not s_arg.contains(s_input):
- raise Exception("%r argument %d:\n"
+ raise SignatureError("%r argument %d:\n"
"expected %s,\n"
" got %s" % (funcdesc, i+1,
s_arg,
s_input))
inputcells[:] = args_s
+class SignatureError(AnnotatorError):
+ pass
+
def finish_type(paramtype, bookkeeper, func):
from rpython.rlib.types import SelfTypeMarker, AnyTypeMarker
if isinstance(paramtype, SomeObject):
return paramtype
elif isinstance(paramtype, SelfTypeMarker):
- raise Exception("%r argument declared as annotation.types.self(); class needs decorator rlib.signature.finishsigs()" % (func,))
+ raise SignatureError("%r argument declared as annotation.types.self(); class needs decorator rlib.signature.finishsigs()" % (func,))
elif isinstance(paramtype, AnyTypeMarker):
return None
else:
@@ -149,7 +152,7 @@
if s_param is None: # can be anything
continue
if not s_param.contains(s_actual):
- raise Exception("%r argument %d:\n"
+ raise SignatureError("%r argument %d:\n"
"expected %s,\n"
" got %s" % (funcdesc, i+1, s_param, s_actual))
for i, s_param in enumerate(params_s):
@@ -160,7 +163,7 @@
def enforce_signature_return(funcdesc, sigtype, inferredtype):
s_sigret = finish_type(sigtype, funcdesc.bookkeeper, funcdesc.pyobj)
if s_sigret is not None and not s_sigret.contains(inferredtype):
- raise Exception("%r return value:\n"
+ raise SignatureError("%r return value:\n"
"expected %s,\n"
" got %s" % (funcdesc, s_sigret, inferredtype))
return s_sigret
diff --git a/rpython/rlib/test/test_signature.py b/rpython/rlib/test/test_signature.py
--- a/rpython/rlib/test/test_signature.py
+++ b/rpython/rlib/test/test_signature.py
@@ -25,7 +25,7 @@
def check_annotator_fails(caller):
exc = py.test.raises(Exception, annotate_at, caller).value
- assert caller.func_name in repr(exc.args)
+ assert caller.func_name in str(exc)
def test_bookkeeping():
More information about the pypy-commit
mailing list