[pypy-svn] r29679 - in pypy/dist/pypy: rpython/ootypesystem translator/js translator/js/demo/jsdemo translator/js/demo/jsdemo/static/images translator/js/test
fijal at codespeak.net
fijal at codespeak.net
Thu Jul 6 16:04:44 CEST 2006
Author: fijal
Date: Thu Jul 6 16:04:33 2006
New Revision: 29679
Modified:
pypy/dist/pypy/rpython/ootypesystem/bltregistry.py
pypy/dist/pypy/translator/js/database.py
pypy/dist/pypy/translator/js/demo/jsdemo/bnb.py
pypy/dist/pypy/translator/js/demo/jsdemo/consserv.py
pypy/dist/pypy/translator/js/demo/jsdemo/proxy.py
pypy/dist/pypy/translator/js/demo/jsdemo/static/images/ (props changed)
pypy/dist/pypy/translator/js/test/test_bltn.py
Log:
Added better rendering of BasicExternal in JS backend as well as some simple test.
Modified: pypy/dist/pypy/rpython/ootypesystem/bltregistry.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/bltregistry.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/bltregistry.py Thu Jul 6 16:04:33 2006
@@ -93,7 +93,7 @@
__name__ = "ExternalType"
def __init__(self, _class):
- # FIXME: We want to support inheritance at some point
+ # FIXME: We want to support inheritance at some point, or maybe not
self._class_ = _class
self._name = str(_class)
self._superclass = None
@@ -125,7 +125,11 @@
next.const = True
self._fields[i] = next
self._methods = frozendict(_signs)
-
+
+ def __hash__(self):
+ # FIXME: for now
+ return hash(self._name)
+
def get(class_):
try:
return ExternalType.class_dict[class_]
Modified: pypy/dist/pypy/translator/js/database.py
==============================================================================
--- pypy/dist/pypy/translator/js/database.py (original)
+++ pypy/dist/pypy/translator/js/database.py Thu Jul 6 16:04:33 2006
@@ -410,5 +410,10 @@
return self.const._TYPE._name.split('.')[-1][:-2]
def init(self, ilasm):
- self.db.register_comm_proxy(self.const, self.name)
- ilasm.new(self.get_name())
+ if getattr(self.const._TYPE._class_, '_render_xmlhttp', False):
+ self.db.register_comm_proxy(self.const, self.name)
+ ilasm.new(self.get_name())
+ else:
+ # Otherwise they just exist, or it's not implemented
+ pass
+
Modified: pypy/dist/pypy/translator/js/demo/jsdemo/bnb.py
==============================================================================
--- pypy/dist/pypy/translator/js/demo/jsdemo/bnb.py (original)
+++ pypy/dist/pypy/translator/js/demo/jsdemo/bnb.py Thu Jul 6 16:04:33 2006
@@ -91,6 +91,8 @@
sys.exit()
port = int(port[7:-1])
+ _render_xmlhttp = True
+
_methods = {
'get_message' : MethodDesc( [('callback', (lambda : None))] , {'aa':[{'aa':'bb'}]}),
'add_player' : MethodDesc( [('player_id', 0), ('callback', (lambda : None))] , {'aa':[{'aa':'bb'}]}),
Modified: pypy/dist/pypy/translator/js/demo/jsdemo/consserv.py
==============================================================================
--- pypy/dist/pypy/translator/js/demo/jsdemo/consserv.py (original)
+++ pypy/dist/pypy/translator/js/demo/jsdemo/consserv.py Thu Jul 6 16:04:33 2006
@@ -23,6 +23,8 @@
'run_command' : MethodDesc([('str_to_eval', 'ss'), ('callback', lambda : None)], {'aa':'aa'})
}
+ _render_xmlhttp = True
+
@turbogears.expose(html='jsdemo.templates.console')
def index(self):
return dict(now=time.ctime(), onload=self.jsname, code=self.jssource)
Modified: pypy/dist/pypy/translator/js/demo/jsdemo/proxy.py
==============================================================================
--- pypy/dist/pypy/translator/js/demo/jsdemo/proxy.py (original)
+++ pypy/dist/pypy/translator/js/demo/jsdemo/proxy.py Thu Jul 6 16:04:33 2006
@@ -13,6 +13,8 @@
""" Class for running communication tests which are not designed to end
after single function call
"""
+ _render_xmlhttp = True
+
_methods = {
'send_result' : MethodDesc((('result', "aa"), ('exc', "aa"), ('callback',(lambda : None))), None)
}
Modified: pypy/dist/pypy/translator/js/test/test_bltn.py
==============================================================================
--- pypy/dist/pypy/translator/js/test/test_bltn.py (original)
+++ pypy/dist/pypy/translator/js/test/test_bltn.py Thu Jul 6 16:04:33 2006
@@ -1,31 +1,27 @@
-""" blttest
+""" blttest - some tests of builtin stuff
"""
import py
-#from pypy.rpython.ootypesystem.bltregistry import BasicExternal
+from pypy.rpython.ootypesystem.bltregistry import BasicExternal
from pypy.translator.js.test.runtest import compile_function
-from pypy.rpython.ootypesystem.ootype import Signed, Void, Float, List, String
-
-py.test.skip("External object support not implemented yet")
+def check_source_contains(compiled_function, pattern):
+ import re
+
+ source = compiled_function.js.tmpfile.open().read()
+ return re.search(pattern, source)
-class Sth(BasicExternal):
- # Take care!
- # we do not annotate it, so we must take care of what we're talking with
- _fields = {
- 'a' : Signed,
- 'b' : String,
- }
+# check rendering _dom.get_document()
+def test_simple_builtin():
+ from pypy.translator.js.modules._dom import get_document
+ def test_document_call():
+ return get_document().getElementById("some_id")
- _methods = {
- }
+ fn = compile_function(test_document_call, [])
+ assert check_source_contains(fn, "= document")
+ assert check_source_contains(fn, ".getElementById")
-def test_simple():
- def test_new():
- s = Sth()
- s.a = 3
- return s
+# check rendering transparent proxy
+#def test_simple_proxy():
- fn = compile_function(test_new, [])
- fn()
More information about the Pypy-commit
mailing list