[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