[pypy-svn] r30911 - pypy/dist/pypy/rpython/ootypesystem

fijal at codespeak.net fijal at codespeak.net
Wed Aug 2 17:16:05 CEST 2006


Author: fijal
Date: Wed Aug  2 17:16:04 2006
New Revision: 30911

Modified:
   pypy/dist/pypy/rpython/ootypesystem/bltregistry.py
Log:
Fixed decorator.


Modified: pypy/dist/pypy/rpython/ootypesystem/bltregistry.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/bltregistry.py	(original)
+++ pypy/dist/pypy/rpython/ootypesystem/bltregistry.py	Wed Aug  2 17:16:04 2006
@@ -63,19 +63,25 @@
     def described(cls, retval=None, args={}):
         def decorator(func):
             code = func.func_code
-            assert(code.co_argcount < len(func.func_defaults) + len(args), "Not enough information for describing method")
+            if not func.func_defaults:
+                defs = []
+            else:
+                defs = func.func_defaults
             
-            for arg in xrange(1, code.co_argcount - len(func.func_defaults)):
+            
+            assert(code.co_argcount < len(defs) + len(args), "Not enough information for describing method")
+            
+            for arg in xrange(1, code.co_argcount - len(defs)):
                 assert code.co_varnames[arg] in args, "Don't have example for arg %s" % code.co_varnames[arg]
             
             arg_pass = []
-            start_pos = code.co_argcount - len(func.func_defaults)
+            start_pos = code.co_argcount - len(defs)
             for arg in xrange(1, code.co_argcount):
                 varname = code.co_varnames[arg]
                 if varname in args:
                     arg_pass.append((varname, args[varname]))
                 else:
-                    arg_pass.append((varname, func.func_defaults[arg - start_pos]))
+                    arg_pass.append((varname, defs[arg - start_pos]))
             cls._methods[func.__name__] = MethodDesc(arg_pass, retval)
             return func
         return decorator



More information about the Pypy-commit mailing list