Index: dart/compiler/java/com/google/dart/runner/RhinoLauncher.java |
diff --git a/dart/compiler/java/com/google/dart/runner/RhinoLauncher.java b/dart/compiler/java/com/google/dart/runner/RhinoLauncher.java |
deleted file mode 100644 |
index b38464521efe8d846a1b9e9c3c8396a0319299c3..0000000000000000000000000000000000000000 |
--- a/dart/compiler/java/com/google/dart/runner/RhinoLauncher.java |
+++ /dev/null |
@@ -1,218 +0,0 @@ |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-package com.google.dart.runner; |
- |
-import org.mozilla.javascript.Context; |
-import org.mozilla.javascript.Function; |
-import org.mozilla.javascript.FunctionObject; |
-import org.mozilla.javascript.RhinoException; |
-import org.mozilla.javascript.Scriptable; |
-import org.mozilla.javascript.Undefined; |
- |
-import java.io.PrintStream; |
-import java.lang.reflect.Member; |
- |
-/** |
- * Runs a given JS script. |
- */ |
-public class RhinoLauncher implements JavaScriptLauncher { |
- |
- /** |
- * Rhino-callable assert() method. |
- * |
- * TODO(acleung): Deprecate it to just follow DartVM's test cases. |
- */ |
- private static class AssertFunction extends SimpleFunction { |
- @Override |
- public Object call(Context ctx, Scriptable scope, Scriptable thisObj, Object[] args) { |
- // Validate arguments (god, I hate this dynamic stuff). |
- if ((args.length < 1) || (args.length > 2)) { |
- Context.reportError("Invalid call to assertThat(" + args + ")"); |
- } |
- if (!(args[0] instanceof Boolean)) { |
- Context.reportError("Argument 0 must be of type boolean"); |
- } |
- if (args.length == 2 && !(args[1] instanceof String)) { |
- Context.reportError("Argument 1 must be of type String"); |
- } |
- |
- if (!(Boolean) args[0]) { |
- Context.reportError("assert() failed" + ((args.length == 2) ? ": " + args[1] : "")); |
- } |
- return null; |
- } |
- } |
- |
- /** |
- * Emulates the Expect_throwException() function. |
- */ |
- public static class ThrowException extends FunctionObject { |
- |
- public ThrowException(String name, Member methodOrConstructor, Scriptable scope) { |
- super(name, methodOrConstructor, scope); |
- } |
- |
- @Override |
- public Object call(Context ctx, Scriptable scope, Scriptable thisObj, Object[] args) { |
- if (args.length != 1) { |
- Context.reportError("Invalid call to Expect_throwException(e)"); |
- } |
- throwException(args[0]); |
- return Undefined.instance; |
- } |
- |
- public void throwException(Object arg0) { |
- Context.reportError(arg0.toString()); |
- } |
- } |
- |
- /** |
- * Emulates the V8 'write' function. |
- */ |
- public static class Write extends FunctionObject { |
- private PrintStream out; |
- |
- public Write(String name, Member methodOrConstructor, Scriptable scope, PrintStream out) { |
- super(name, methodOrConstructor, scope); |
- this.out = out; |
- } |
- |
- @Override |
- public Object call(Context ctx, Scriptable scope, Scriptable thisObj, Object[] args) { |
- write(args[0]); |
- return Undefined.instance; |
- } |
- |
- public void write(Object arg0) { |
- out.print(arg0); |
- } |
- } |
- |
- /** |
- * Simple Rhino-callable function object. |
- */ |
- private static abstract class SimpleFunction implements Function { |
- @Override |
- public Scriptable construct(Context cx, Scriptable scope, Object[] args) { |
- return null; |
- } |
- |
- @Override |
- public void delete(int index) { |
- } |
- |
- @Override |
- public void delete(String name) { |
- } |
- |
- @Override |
- public Object get(int index, Scriptable start) { |
- return null; |
- } |
- |
- @Override |
- public Object get(String name, Scriptable start) { |
- return null; |
- } |
- |
- @Override |
- public String getClassName() { |
- return "Function"; |
- } |
- |
- @Override |
- public Object getDefaultValue(Class<?> hint) { |
- return null; |
- } |
- |
- @Override |
- public Object[] getIds() { |
- return null; |
- } |
- |
- @Override |
- public Scriptable getParentScope() { |
- return null; |
- } |
- |
- @Override |
- public Scriptable getPrototype() { |
- return null; |
- } |
- |
- @Override |
- public boolean has(int index, Scriptable start) { |
- return false; |
- } |
- |
- @Override |
- public boolean has(String name, Scriptable start) { |
- return false; |
- } |
- |
- @Override |
- public boolean hasInstance(Scriptable instance) { |
- return false; |
- } |
- |
- @Override |
- public void put(int index, Scriptable start, Object value) { |
- } |
- |
- @Override |
- public void put(String name, Scriptable start, Object value) { |
- } |
- |
- @Override |
- public void setParentScope(Scriptable parent) { |
- } |
- |
- @Override |
- public void setPrototype(Scriptable prototype) { |
- } |
- } |
- |
- @Override |
- public void execute(String jsScript, String sourceName, String[] args, RunnerOptions options, |
- PrintStream stdout, PrintStream stderr) |
- throws RunnerError { |
- try { |
- Context ctx = Context.enter(); |
- Scriptable scope = ctx.initStandardObjects(); |
- scope.put("assert", scope, new AssertFunction()); |
- scope.put("native_Expect__throwException", scope, new ThrowException("Expect__throwException", |
- ThrowException.class.getMethod("throwException", Object.class), scope)); |
- scope.put("write", scope, new Write("write", |
- Write.class.getMethod("write", Object.class), scope, stderr)); |
- |
- // The variable 'arguments' is also used in d8. |
- // Rhino differentiates between Java Strings and JS Strings. If the args-array is not |
- // converted the JS execution will work, but Rhino will complain. |
- scope.put("arguments", scope, Context.javaToJS(args, scope)); |
- |
- // Evaluate the application. |
- ctx.evaluateString(scope, jsScript, sourceName, 1, null); |
- } catch (NoSuchMethodException e) { |
- throw new RunnerError(e); |
- } catch (RhinoException e) { |
- // TODO(jgw): This is a hack to dump the translated source when something goes wrong. It can |
- // be removed as soon as we have a source map we can use to provide source-level errors. |
- if (options.verbose()) { |
- stdout.println(jsScript); |
- stdout.flush(); |
- } |
- |
- StringBuffer msg = new StringBuffer(); |
- msg.append(e.sourceName()); |
- msg.append(" (" + e.lineNumber() + ":" + e.columnNumber() + ")"); |
- msg.append(" : " + e.details()); |
- stderr.println(msg.toString()); |
- throw e; |
- } finally { |
- Context.exit(); |
- } |
- } |
- |
-} |