[pypy-svn] r10652 - in pypy/dist/pypy: annotation objspace/std
pedronis at codespeak.net
pedronis at codespeak.net
Fri Apr 15 01:00:39 CEST 2005
Author: pedronis
Date: Fri Apr 15 01:00:39 2005
New Revision: 10652
Modified:
pypy/dist/pypy/annotation/builtin.py
pypy/dist/pypy/objspace/std/typeobject.py
Log:
workaround getitem(None,0) -> SomeObject issue
annotations for os.path.* stuff and min,max
Modified: pypy/dist/pypy/annotation/builtin.py
==============================================================================
--- pypy/dist/pypy/annotation/builtin.py (original)
+++ pypy/dist/pypy/annotation/builtin.py Fri Apr 15 01:00:39 2005
@@ -3,11 +3,11 @@
"""
import types
-import sys, math
+import sys, math, os
from pypy.tool.ansi_print import ansi_print
from pypy.annotation.model import SomeInteger, SomeObject, SomeChar, SomeBool
from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice
-from pypy.annotation.model import SomeFloat
+from pypy.annotation.model import SomeFloat, unionof
from pypy.annotation.bookkeeper import getbookkeeper
from pypy.annotation.factory import ListFactory
from pypy.objspace.flow.model import Constant
@@ -112,6 +112,15 @@
factory.generalize(s_tup)
return factory.create()
+def builtin_min(*s_values):
+ if len(s_values) == 1: # xxx do we support this?
+ s_iter = s_values[0].iter()
+ return s_iter.next()
+ else:
+ return unionof(*s_values)
+
+builtin_max = builtin_min
+
def builtin_apply(*stuff):
getbookkeeper().warning("ignoring apply%r" % (stuff,))
return SomeObject()
@@ -164,6 +173,12 @@
def unicodedata_decimal(s_uchr):
return SomeInteger()
+def test(*args):
+ return SomeBool()
+
+def pathpart(*args):
+ return SomeString()
+
# collect all functions
import __builtin__
BUILTIN_ANALYZERS = {}
@@ -187,3 +202,9 @@
import unicodedata
BUILTIN_ANALYZERS[unicodedata.decimal] = unicodedata_decimal # xxx
+# os.path stuff
+BUILTIN_ANALYZERS[os.path.dirname] = pathpart
+BUILTIN_ANALYZERS[os.path.normpath] = pathpart
+BUILTIN_ANALYZERS[os.path.join] = pathpart
+BUILTIN_ANALYZERS[os.path.exists] = test
+BUILTIN_ANALYZERS[os.path.isdir] = test
Modified: pypy/dist/pypy/objspace/std/typeobject.py
==============================================================================
--- pypy/dist/pypy/objspace/std/typeobject.py (original)
+++ pypy/dist/pypy/objspace/std/typeobject.py Fri Apr 15 01:00:39 2005
@@ -305,7 +305,7 @@
while orderlists:
for candidatelist in orderlists:
candidate = candidatelist[0]
- if mro_blockinglist(candidate, orderlists) is None:
+ if mro_blockinglist(candidate, orderlists) is GOODCANDIDATE:
break # good candidate
else:
return mro_error(orderlists) # no candidate found
@@ -318,11 +318,13 @@
del orderlists[i]
return order
+GOODCANDIDATE = []
+
def mro_blockinglist(candidate, orderlists):
for lst in orderlists:
if candidate in lst[1:]:
return lst
- return None # good candidate
+ return GOODCANDIDATE # good candidate
def mro_error(orderlists):
cycle = []
More information about the Pypy-commit
mailing list