diff --git a/js/js.parser/src/com/google/gwt/dev/js/JsParser.java b/js/js.parser/src/com/google/gwt/dev/js/JsParser.java index 4aa75ab0bee..a7ec8e41b6a 100644 --- a/js/js.parser/src/com/google/gwt/dev/js/JsParser.java +++ b/js/js.parser/src/com/google/gwt/dev/js/JsParser.java @@ -31,11 +31,13 @@ import java.util.Stack; */ public class JsParser { + private JsProgram program; + public static List parse( SourceInfo rootSourceInfo, JsScope scope, Reader r, boolean insideFunction ) throws IOException, JsParserException { - return new JsParser().parseImpl(rootSourceInfo, scope, r, insideFunction); + return new JsParser(scope.getProgram()).parseImpl(rootSourceInfo, scope, r, insideFunction); } private final Stack scopeStack = new Stack(); @@ -45,7 +47,8 @@ public class JsParser { */ private static final String sourceNameStub = "jsCode"; - private JsParser() { + private JsParser(JsProgram program) { + this.program = program; } List parseImpl( @@ -180,7 +183,7 @@ public class JsParser { return mapConditional(node); case TokenStream.STRING: - return new JsStringLiteral(node.getString()); + return program.getStringLiteral(node.getString()); case TokenStream.NUMBER_INT: return mapIntNumber(node); @@ -565,7 +568,7 @@ public class JsParser { toForIn.setBody(bodyStmt); } else { - toForIn.setBody(new JsEmpty()); + toForIn.setBody(program.getEmptyStatement()); } return toForIn; @@ -593,7 +596,7 @@ public class JsParser { toFor.setBody(bodyStmt); } else { - toFor.setBody(new JsEmpty()); + toFor.setBody(program.getEmptyStatement()); } return toFor; } @@ -755,11 +758,11 @@ public class JsParser { } private JsExpression mapIntNumber(Node numberNode) { - return new JsNumberLiteral.JsIntLiteral((int) numberNode.getDouble()); + return program.getNumberLiteral((int) numberNode.getDouble()); } private JsExpression mapDoubleNumber(Node numberNode) { - return new JsNumberLiteral.JsDoubleLiteral(numberNode.getDouble()); + return program.getNumberLiteral(numberNode.getDouble()); } private JsExpression mapObjectLit(Node objLitNode) throws JsParserException { @@ -823,7 +826,7 @@ public class JsParser { private JsExpression mapPrimary(Node node) throws JsParserException { switch (node.getIntDatum()) { case TokenStream.THIS: - return new JsLiteral.JsThisRef(); + return JsLiteral.THIS; case TokenStream.TRUE: return JsBooleanLiteral.TRUE; @@ -956,7 +959,7 @@ public class JsParser { else { // When map() returns null, we return an empty statement. // - return new JsEmpty(); + return program.getEmptyStatement(); } }