[pypy-commit] lang-js default: removed Interpreter.run_file

stepahn noreply at buildbot.pypy.org
Fri Dec 28 11:35:44 CET 2012


Author: Stephan <stephan at stzal.com>
Branch: 
Changeset: r322:dad77daeb611
Date: 2012-12-21 18:45 +0100
http://bitbucket.org/pypy/lang-js/changeset/dad77daeb611/

Log:	removed Interpreter.run_file

diff --git a/js/builtins_interpreter.py b/js/builtins_interpreter.py
--- a/js/builtins_interpreter.py
+++ b/js/builtins_interpreter.py
@@ -20,8 +20,10 @@
 @w_return
 def js_load(this, args):
     from js.object_space import object_space
+    from js.interpreter import load_file
     filename = args[0].to_string()
-    object_space.interpreter.run_file(str(filename))
+    src = load_file(str(filename))
+    object_space.interpreter.run_src(src)
 
 
 @w_return
diff --git a/js/interpreter.py b/js/interpreter.py
--- a/js/interpreter.py
+++ b/js/interpreter.py
@@ -2,16 +2,9 @@
 
 
 def load_file(filename):
-    from js.astbuilder import parse_to_ast
-    from runistr import decode_str_utf8
-
     f = open_file_as_stream(str(filename))
     src = f.readall()
-    usrc = decode_str_utf8(src)
-    assert usrc is not None
-    ast = parse_to_ast(usrc)
-    f.close()
-    return ast
+    return src
 
 
 class InterpreterConfig(object):
@@ -38,10 +31,6 @@
 
         object_space.assign_proto(self.global_object)
 
-    def run_file(self, filename):
-        ast = load_file(filename)
-        return self.run_ast(ast)
-
     def run_ast(self, ast):
         symbol_map = ast.symbol_map
 
diff --git a/js/py-js.py b/js/py-js.py
--- a/js/py-js.py
+++ b/js/py-js.py
@@ -19,18 +19,26 @@
 
 
 def run(files, opts):
-    from js.interpreter import Interpreter
+    from js.interpreter import Interpreter, load_file
 
     interactive = len(files) == 0
     inspect = opts.get('inspect', False)
 
     interp = Interpreter(opts)
 
-    for f in files:
+    for filename in files:
+        src = load_file(filename)
+
         try:
-            interp.run_file(f)
+            interp.run_src(src)
+        except ParseError as exc:
+            printsyntaxerror(unicode(filename), exc, src)
+            raise SystemExit
+        except LexerError as e:
+            printlexererror(unicode(filename), e, src)
+            raise SystemExit
         except JsException as e:
-            printerrormessage(unicode(f), e._msg())
+            printerrormessage(unicode(filename), e._msg())
             raise SystemExit
 
     if inspect or interactive:
diff --git a/js/test/ecma/conftest.py b/js/test/ecma/conftest.py
--- a/js/test/ecma/conftest.py
+++ b/js/test/ecma/conftest.py
@@ -1,7 +1,7 @@
 import pytest
 import py
 
-from js.interpreter import Interpreter
+from js.interpreter import Interpreter, load_file
 from _pytest.runner import Failed
 from js.jsobj import _w
 from js.execution import JsException
@@ -222,8 +222,10 @@
         def f(testfile):
             interp = Interpreter({'no-exception-jseval': True})
 
-            interp.run_file(str(shellpath))
-            interp.run_file(testfile)
+            shell_src = load_file(str(shellpath))
+            interp.run_src(shell_src)
+            test_src = load_file(testfile)
+            interp.run_src(test_src)
 
             global_object = interp.global_object
             testcases = global_object.get(u'testcases')


More information about the pypy-commit mailing list