Index: dart/compiler/java/com/google/dart/compiler/backend/js/ClosureJsAstTranslator.java |
diff --git a/dart/compiler/java/com/google/dart/compiler/backend/js/ClosureJsAstTranslator.java b/dart/compiler/java/com/google/dart/compiler/backend/js/ClosureJsAstTranslator.java |
deleted file mode 100644 |
index 533e8b60f4e28e91084bcef8c7161b6684a51a62..0000000000000000000000000000000000000000 |
--- a/dart/compiler/java/com/google/dart/compiler/backend/js/ClosureJsAstTranslator.java |
+++ /dev/null |
@@ -1,724 +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.compiler.backend.js; |
- |
-import com.google.common.base.Preconditions; |
-import com.google.dart.compiler.Source; |
-import com.google.dart.compiler.backend.js.ast.HasName; |
-import com.google.dart.compiler.backend.js.ast.JsArrayAccess; |
-import com.google.dart.compiler.backend.js.ast.JsArrayLiteral; |
-import com.google.dart.compiler.backend.js.ast.JsBinaryOperation; |
-import com.google.dart.compiler.backend.js.ast.JsBinaryOperator; |
-import com.google.dart.compiler.backend.js.ast.JsBlock; |
-import com.google.dart.compiler.backend.js.ast.JsBooleanLiteral; |
-import com.google.dart.compiler.backend.js.ast.JsBreak; |
-import com.google.dart.compiler.backend.js.ast.JsCase; |
-import com.google.dart.compiler.backend.js.ast.JsCatch; |
-import com.google.dart.compiler.backend.js.ast.JsConditional; |
-import com.google.dart.compiler.backend.js.ast.JsContinue; |
-import com.google.dart.compiler.backend.js.ast.JsDebugger; |
-import com.google.dart.compiler.backend.js.ast.JsDefault; |
-import com.google.dart.compiler.backend.js.ast.JsDoWhile; |
-import com.google.dart.compiler.backend.js.ast.JsEmpty; |
-import com.google.dart.compiler.backend.js.ast.JsExprStmt; |
-import com.google.dart.compiler.backend.js.ast.JsExpression; |
-import com.google.dart.compiler.backend.js.ast.JsFor; |
-import com.google.dart.compiler.backend.js.ast.JsForIn; |
-import com.google.dart.compiler.backend.js.ast.JsFunction; |
-import com.google.dart.compiler.backend.js.ast.JsIf; |
-import com.google.dart.compiler.backend.js.ast.JsInvocation; |
-import com.google.dart.compiler.backend.js.ast.JsLabel; |
-import com.google.dart.compiler.backend.js.ast.JsName; |
-import com.google.dart.compiler.backend.js.ast.JsNameRef; |
-import com.google.dart.compiler.backend.js.ast.JsNew; |
-import com.google.dart.compiler.backend.js.ast.JsNode; |
-import com.google.dart.compiler.backend.js.ast.JsNullLiteral; |
-import com.google.dart.compiler.backend.js.ast.JsNumberLiteral; |
-import com.google.dart.compiler.backend.js.ast.JsObjectLiteral; |
-import com.google.dart.compiler.backend.js.ast.JsParameter; |
-import com.google.dart.compiler.backend.js.ast.JsPostfixOperation; |
-import com.google.dart.compiler.backend.js.ast.JsPrefixOperation; |
-import com.google.dart.compiler.backend.js.ast.JsProgram; |
-import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer; |
-import com.google.dart.compiler.backend.js.ast.JsRegExp; |
-import com.google.dart.compiler.backend.js.ast.JsReturn; |
-import com.google.dart.compiler.backend.js.ast.JsStatement; |
-import com.google.dart.compiler.backend.js.ast.JsStringLiteral; |
-import com.google.dart.compiler.backend.js.ast.JsSwitch; |
-import com.google.dart.compiler.backend.js.ast.JsSwitchMember; |
-import com.google.dart.compiler.backend.js.ast.JsThisRef; |
-import com.google.dart.compiler.backend.js.ast.JsThrow; |
-import com.google.dart.compiler.backend.js.ast.JsTry; |
-import com.google.dart.compiler.backend.js.ast.JsUnaryOperator; |
-import com.google.dart.compiler.backend.js.ast.JsVars; |
-import com.google.dart.compiler.backend.js.ast.JsVars.JsVar; |
-import com.google.dart.compiler.backend.js.ast.JsWhile; |
-import com.google.dart.compiler.common.HasSymbol; |
-import com.google.dart.compiler.common.SourceInfo; |
-import com.google.dart.compiler.common.Symbol; |
-import com.google.javascript.jscomp.AstValidator; |
-import com.google.javascript.rhino.InputId; |
-import com.google.javascript.rhino.JSDocInfoBuilder; |
-import com.google.javascript.rhino.Node; |
-import com.google.javascript.rhino.Token; |
-import com.google.javascript.rhino.jstype.SimpleSourceFile; |
-import com.google.javascript.rhino.jstype.StaticSourceFile; |
- |
-import java.util.HashMap; |
-import java.util.Map; |
- |
- |
-/** |
- * Translate a Dart JS AST to a Closure Compiler AST. |
- * @author johnlenz@google.com (John Lenz) |
- */ |
-public class ClosureJsAstTranslator { |
- private final Map<Source, StaticSourceFile> sourceCache = |
- new HashMap<Source, StaticSourceFile>(); |
- |
- private final boolean validate; |
- |
- ClosureJsAstTranslator(boolean validate) { |
- this.validate = validate; |
- } |
- |
- private StaticSourceFile getClosureSourceFile(Source source) { |
- StaticSourceFile closureSourceFile = sourceCache.get(source); |
- if (closureSourceFile == null) { |
- closureSourceFile = new SimpleSourceFile(source.getName(), false); |
- sourceCache.put(source, closureSourceFile); |
- } |
- return closureSourceFile; |
- } |
- |
- public Node translate(JsProgram program, InputId inputId, Source source) { |
- Node script = new Node(Token.SCRIPT); |
- script.putBooleanProp(Node.SYNTHETIC_BLOCK_PROP, true); |
- script.setInputId(inputId); |
- script.putProp(Node.SOURCENAME_PROP, source.getName()); |
- script.setStaticSourceFile(getClosureSourceFile(source)); |
- for (JsStatement s : program.getGlobalBlock().getStatements()) { |
- script.addChildToBack(transform(s)); |
- } |
- // Validate the structural integrity of the AST. |
- if (validate) { |
- new AstValidator().validateScript(script); |
- } |
- return script; |
- } |
- |
- private Node transform(JsStatement x) { |
- switch (x.getKind()) { |
- case BLOCK: |
- return transform((JsBlock)x); |
- case BREAK: |
- return transform((JsBreak)x); |
- case CONTINUE: |
- return transform((JsContinue)x); |
- case DEBUGGER: |
- return transform((JsDebugger)x); |
- case DO: |
- return transform((JsDoWhile)x); |
- case EMPTY: |
- return transform((JsEmpty)x); |
- case EXPR_STMT: |
- return transform((JsExprStmt)x); |
- case FOR: |
- return transform((JsFor)x); |
- case FOR_IN: |
- return transform((JsForIn)x); |
- case IF: |
- return transform((JsIf)x); |
- case LABEL: |
- return transform((JsLabel)x); |
- case RETURN: |
- return transform((JsReturn)x); |
- case SWITCH: |
- return transform((JsSwitch)x); |
- case THROW: |
- return transform((JsThrow)x); |
- case TRY: |
- return transform((JsTry)x); |
- case VARS: |
- return transform((JsVars)x); |
- case WHILE: |
- return transform((JsWhile)x); |
- default: |
- throw new IllegalStateException( |
- "Unexpected statement type: " + x.getClass().getSimpleName()); |
- } |
- } |
- |
- private Node transform(JsExpression x) { |
- assert x != null; |
- switch (x.getKind()) { |
- case ARRAY: |
- return transform((JsArrayLiteral)x); |
- case ARRAY_ACCESS: |
- return transform((JsArrayAccess)x); |
- case BINARY_OP: |
- return transform((JsBinaryOperation)x); |
- case CONDITIONAL: |
- return transform((JsConditional)x); |
- case INVOKE: |
- return transform((JsInvocation)x); |
- case FUNCTION: |
- return transform((JsFunction)x); |
- case OBJECT: |
- return transform((JsObjectLiteral)x); |
- case BOOLEAN: |
- return transform((JsBooleanLiteral)x); |
- case NULL: |
- return transform((JsNullLiteral)x); |
- case NUMBER: |
- return transform((JsNumberLiteral)x); |
- case REGEXP: |
- return transform((JsRegExp)x); |
- case STRING: |
- return transform((JsStringLiteral)x); |
- case THIS: |
- return transform((JsThisRef)x); |
- case NAME_REF: |
- return transform((JsNameRef)x); |
- case NEW: |
- return transform((JsNew)x); |
- case POSTFIX_OP: |
- return transform((JsPostfixOperation)x); |
- case PREFIX_OP: |
- return transform((JsPrefixOperation)x); |
- default: |
- throw new IllegalStateException( |
- "Unexpected expression type: " + x.getClass().getSimpleName()); |
- } |
- } |
- |
- private Node transform(JsSwitchMember x) { |
- switch (x.getKind()) { |
- case CASE: |
- return transform((JsCase)x); |
- case DEFAULT: |
- return transform((JsDefault)x); |
- default: |
- throw new IllegalStateException( |
- "Unexpected switch member type: " + x.getClass().getSimpleName()); |
- } |
- } |
- |
- private Node transform(JsArrayAccess x) { |
- Node n = new Node(Token.GETELEM, |
- transform(x.getArrayExpr()), |
- transform(x.getIndexExpr())); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsArrayLiteral x) { |
- Node n = new Node(Token.ARRAYLIT); |
- for (Object element : x.getExpressions()) { |
- JsExpression arg = (JsExpression) element; |
- n.addChildToBack(transform(arg)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsBinaryOperation x) { |
- JsBinaryOperator op = x.getOperator(); |
- Node n = new Node(getTokenForOp(op), |
- transform(x.getArg1()), |
- transform(x.getArg2())); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsBlock x) { |
- Node n = new Node(Token.BLOCK); |
- for (JsStatement s : x.getStatements()) { |
- n.addChildToBack(transform(s)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsBooleanLiteral x) { |
- Node n = new Node(x.getValue() ? Token.TRUE : Token.FALSE); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsBreak x) { |
- Node n = new Node(Token.BREAK); |
- |
- JsNameRef label = x.getLabel(); |
- if (label != null) { |
- n.addChildToBack(transformLabel(label)); |
- } |
- |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsCase x) { |
- Node n = new Node(Token.CASE); |
- n.addChildToBack(transform(x.getCaseExpr())); |
- |
- Node body = new Node(Token.BLOCK); |
- body.putBooleanProp(Node.SYNTHETIC_BLOCK_PROP, true); |
- applySourceInfo(body, x); |
- n.addChildToBack(body); |
- |
- for (Object element : x.getStmts()) { |
- JsStatement stmt = (JsStatement) element; |
- body.addChildToBack(transform(stmt)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsCatch x) { |
- Node n = new Node(Token.CATCH, |
- transformName(x.getParameter().getName()), |
- transform(x.getBody())); |
- Preconditions.checkState(x.getCondition() == null); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsConditional x) { |
- Node n = new Node(Token.HOOK, |
- transform(x.getTestExpression()), |
- transform(x.getThenExpression()), |
- transform(x.getElseExpression())); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsContinue x) { |
- Node n = new Node(Token.CONTINUE); |
- |
- JsNameRef label = x.getLabel(); |
- if (label != null) { |
- n.addChildToBack(transformLabel(label)); |
- } |
- |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsDebugger x) { |
- Node n = new Node(Token.DEBUGGER); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsDefault x) { |
- Node n = new Node(Token.DEFAULT); |
- |
- Node body = new Node(Token.BLOCK); |
- body.putBooleanProp(Node.SYNTHETIC_BLOCK_PROP, true); |
- applySourceInfo(body, x); |
- n.addChildToBack(body); |
- |
- for (Object element : x.getStmts()) { |
- JsStatement stmt = (JsStatement) element; |
- body.addChildToBack(transform(stmt)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsDoWhile x) { |
- Node n = new Node(Token.DO, |
- transformBody(x.getBody(), x), |
- transform(x.getCondition())); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsEmpty x) { |
- return new Node(Token.EMPTY); |
- } |
- |
- private Node transform(JsExprStmt x) { |
- // The Dart JS AST doesn't produce function declarations, instead |
- // they are expressions statements: |
- Node expr = transform(x.getExpression()); |
- if (expr.getType() != Token.FUNCTION) { |
- return new Node(Token.EXPR_RESULT, expr); |
- } else { |
- return expr; |
- } |
- } |
- |
- private Node transform(JsFor x) { |
- Node n = new Node(Token.FOR); |
- |
- // The init expressions or var decl. |
- // |
- if (x.getInitExpr() != null) { |
- n.addChildToBack(transform(x.getInitExpr())); |
- } else if (x.getInitVars() != null) { |
- n.addChildToBack(transform(x.getInitVars())); |
- } else { |
- n.addChildToBack(new Node(Token.EMPTY)); |
- } |
- |
- // The loop test. |
- // |
- if (x.getCondition() != null) { |
- n.addChildToBack(transform(x.getCondition())); |
- } else { |
- n.addChildToBack(new Node(Token.EMPTY)); |
- } |
- |
- // The incr expression. |
- // |
- if (x.getIncrExpr() != null) { |
- n.addChildToBack(transform(x.getIncrExpr())); |
- } else { |
- n.addChildToBack(new Node(Token.EMPTY)); |
- } |
- |
- n.addChildToBack(transformBody(x.getBody(), x)); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsForIn x) { |
- Node n = new Node(Token.FOR); |
- |
- if (x.getIterVarName() != null) { |
- Node expr = new Node(Token.VAR, |
- transformName(x.getIterVarName())); |
- n.addChildToBack(expr); |
- } else { |
- // Just a name ref. |
- // |
- n.addChildToBack(transform(x.getIterExpr())); |
- } |
- |
- n.addChildToBack(transform(x.getObjExpr())); |
- n.addChildToBack(transformBody(x.getBody(), x)); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsFunction x) { |
- Node n = new Node(Token.FUNCTION); |
- if (x.getName() != null) { |
- n.addChildToBack(getNameNodeFor(x)); |
- applyOriginalName(n, x); |
- } else { |
- Node emptyName = Node.newString(Token.NAME, ""); |
- applySourceInfo(emptyName, x); |
- n.addChildToBack(emptyName); |
- n.putProp(Node.ORIGINALNAME_PROP, ""); |
- } |
- |
- Node params = new Node(Token.LP); |
- for (Object element : x.getParameters()) { |
- JsParameter param = (JsParameter) element; |
- params.addChildToBack(transform(param)); |
- } |
- applySourceInfo(n, x); |
- n.addChildToBack(params); |
- |
- n.addChildToBack(transform(x.getBody())); |
- |
- if (x.isConstructor()) { |
- JSDocInfoBuilder builder = new JSDocInfoBuilder(false); |
- builder.recordConstructor(); |
- n.setJSDocInfo(builder.build(n)); |
- } |
- |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsIf x) { |
- Node n = new Node(Token.IF, |
- transform(x.getIfExpr()), |
- transformBody(x.getThenStmt(), x)); |
- if (x.getElseStmt() != null) { |
- n.addChildToBack(transformBody(x.getElseStmt(), x)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsInvocation x) { |
- Node n = new Node(Token.CALL, |
- transform(x.getQualifier())); |
- for (Object element : x.getArguments()) { |
- JsExpression arg = (JsExpression) element; |
- n.addChildToBack(transform(arg)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsLabel x) { |
- Node n = new Node(Token.LABEL, |
- transformLabel(x.getName()), |
- transform(x.getStmt())); |
- |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsNameRef x) { |
- Node n; |
- if (x.getQualifier() != null) { |
- n = new Node(Token.GETPROP, |
- transform(x.getQualifier()), |
- transformNameAsString(x.getShortIdent(), x)); |
- } else { |
- n = transformName(x.getShortIdent(), x); |
- } |
- applyOriginalName(n, x); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsNew x) { |
- Node n = new Node(Token.NEW, |
- transform(x.getConstructorExpression())); |
- for (Object element : x.getArguments()) { |
- JsExpression arg = (JsExpression) element; |
- n.addChildToBack(transform(arg)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsNullLiteral x) { |
- return new Node(Token.NULL); |
- } |
- |
- private Node transform(JsNumberLiteral x) { |
- return Node.newNumber(x.getValue()); |
- } |
- |
- private Node transform(JsObjectLiteral x) { |
- Node n = new Node(Token.OBJECTLIT); |
- |
- for (Object element : x.getPropertyInitializers()) { |
- JsPropertyInitializer propInit = (JsPropertyInitializer) element; |
- Node key = transform(propInit.getLabelExpr()); |
- Preconditions.checkState(key.getType() == Token.STRING); |
- key.addChildToBack(transform(propInit.getValueExpr())); |
- n.addChildToBack(key); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsParameter x) { |
- return getNameNodeFor(x); |
- } |
- |
- private Node transform(JsPostfixOperation x) { |
- Node n = new Node(getTokenForOp(x.getOperator()), |
- transform(x.getArg())); |
- n.putBooleanProp(Node.INCRDECR_PROP, true); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsPrefixOperation x) { |
- Node n = new Node(getTokenForOp(x.getOperator()), |
- transform(x.getArg())); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsRegExp x) { |
- String flags = x.getFlags(); |
- Node n = new Node(Token.REGEXP, |
- Node.newString(x.getPattern()), |
- Node.newString(flags != null ? x.getFlags() : "")); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsReturn x) { |
- Node n = new Node(Token.RETURN); |
- JsExpression result = x.getExpr(); |
- if (result != null) { |
- n.addChildToBack(transform(x.getExpr())); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsStringLiteral x) { |
- return Node.newString(x.getValue()); |
- } |
- |
- private Node transform(JsSwitch x) { |
- Node n = new Node(Token.SWITCH, |
- transform(x.getExpr())); |
- for (JsSwitchMember member : x.getCases()) { |
- n.addChildToBack(transform(member)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsThisRef x) { |
- Node n = new Node(Token.THIS); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsThrow x) { |
- Node n = new Node(Token.THROW, |
- transform(x.getExpr())); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsTry x) { |
- Node n = new Node(Token.TRY, |
- transform(x.getTryBlock())); |
- |
- Node catches = new Node(Token.BLOCK); |
- for (JsCatch catchBlock : x.getCatches()) { |
- catches.addChildToBack(transform(catchBlock)); |
- } |
- n.addChildToBack(catches); |
- |
- JsBlock finallyBlock = x.getFinallyBlock(); |
- if (finallyBlock != null) { |
- n.addChildToBack(transform(finallyBlock)); |
- } |
- |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsVar x) { |
- Node n = getNameNodeFor(x); |
- JsExpression initExpr = x.getInitExpr(); |
- if (initExpr != null) { |
- n.addChildToBack(transform(initExpr)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsVars x) { |
- Node n = new Node(Token.VAR); |
- for (JsVar var : x) { |
- n.addChildToBack(transform(var)); |
- } |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transform(JsWhile x) { |
- Node n = new Node(Token.WHILE, |
- transform(x.getCondition()), |
- transformBody(x.getBody(), x)); |
- return applySourceInfo(n, x); |
- } |
- |
- private Node transformBody(JsStatement x, SourceInfo parent) { |
- Node n = transform(x); |
- if (n.getType() != Token.BLOCK) { |
- Node stmt = n; |
- n = new Node(Token.BLOCK); |
- if (n.getType() != Token.EMPTY) { |
- n.addChildToBack(stmt); |
- } |
- applySourceInfo(n, parent); |
- } |
- return n; |
- } |
- |
- private Node transformLabel(JsNameRef label) { |
- Node n = Node.newString(Token.LABEL_NAME, getName(label)); |
- return applySourceInfo(n, label); |
- } |
- |
- private Node transformLabel(JsName label) { |
- Node n = Node.newString(Token.LABEL_NAME, getName(label)); |
- return applySourceInfo(n, label.getStaticRef()); |
- } |
- |
- private Node transformName(JsName name) { |
- Node n = Node.newString(Token.NAME, getName(name)); |
- return applySourceInfo(n, name.getStaticRef()); |
- } |
- |
- private Node transformName(String name, SourceInfo info) { |
- Node n = Node.newString(Token.NAME, name); |
- return applySourceInfo(n, info); |
- } |
- |
- private Node transformNameAsString(String name, SourceInfo info) { |
- Node n = Node.newString(name); |
- return applySourceInfo(n, info); |
- } |
- |
- private Node getNameNodeFor(HasName hasName) { |
- Node n = Node.newString(Token.NAME, getName(hasName.getName())); |
- applyOriginalName(n, (JsNode)hasName); |
- return applySourceInfo(n, (SourceInfo)hasName); |
- } |
- |
- private String getName(JsName name) { |
- return name.getShortIdent(); |
- } |
- |
- private String getName(JsNameRef name) { |
- return name.getShortIdent(); |
- } |
- |
- private int getTokenForOp(JsUnaryOperator op) { |
- switch (op) { |
- case BIT_NOT: return Token.BITNOT; |
- case DEC: return Token.DEC; |
- case DELETE: return Token.DELPROP; |
- case INC: return Token.INC; |
- case NEG: return Token.NEG; |
- case POS: return Token.POS; |
- case NOT: return Token.NOT; |
- case TYPEOF: return Token.TYPEOF; |
- case VOID: return Token.VOID; |
- } |
- throw new IllegalStateException(); |
- } |
- |
- private int getTokenForOp(JsBinaryOperator op) { |
- switch (op) { |
- case MUL: return Token.MUL; |
- case DIV: return Token.DIV; |
- case MOD: return Token.MOD; |
- case ADD: return Token.ADD; |
- case SUB: return Token.SUB; |
- case SHL: return Token.LSH; |
- case SHR: return Token.RSH; |
- case SHRU: return Token.URSH; |
- case LT: return Token.LT; |
- case LTE: return Token.LE; |
- case GT: return Token.GT; |
- case GTE: return Token.GE; |
- case INSTANCEOF: return Token.INSTANCEOF; |
- case INOP: return Token.IN; |
- case EQ: return Token.EQ; |
- case NEQ: return Token.NE; |
- case REF_EQ: return Token.SHEQ; |
- case REF_NEQ: return Token.SHNE; |
- case BIT_AND: return Token.BITAND; |
- case BIT_XOR: return Token.BITXOR; |
- case BIT_OR: return Token.BITOR; |
- case AND: return Token.AND; |
- case OR: return Token.OR; |
- case ASG: return Token.ASSIGN; |
- case ASG_ADD: return Token.ASSIGN_ADD; |
- case ASG_SUB: return Token.ASSIGN_SUB; |
- case ASG_MUL: return Token.ASSIGN_MUL; |
- case ASG_DIV: return Token.ASSIGN_DIV; |
- case ASG_MOD: return Token.ASSIGN_MOD; |
- case ASG_SHL: return Token.ASSIGN_LSH; |
- case ASG_SHR: return Token.ASSIGN_RSH; |
- case ASG_SHRU: return Token.ASSIGN_URSH; |
- case ASG_BIT_AND: return Token.ASSIGN_BITAND; |
- case ASG_BIT_OR: return Token.ASSIGN_BITOR; |
- case ASG_BIT_XOR: return Token.ASSIGN_BITXOR; |
- case COMMA: return Token.COMMA; |
- } |
- return 0; |
- } |
- |
- private Node applyOriginalName(Node n, JsNode x) { |
- if (x instanceof HasSymbol) { |
- Symbol symbol = ((HasSymbol)x).getSymbol(); |
- if (symbol != null) { |
- String originalName = symbol.getOriginalSymbolName(); |
- n.putProp(Node.ORIGINALNAME_PROP, originalName); |
- } |
- } |
- return n; |
- } |
- |
- private Node applySourceInfo(Node n, SourceInfo info) { |
- if (info != null && info.getSource() != null) { |
- n.setStaticSourceFile(getClosureSourceFile(info.getSource())); |
- n.setLineno(info.getSourceLine()); |
- n.setCharno(info.getSourceColumn()); |
- } |
- return n; |
- } |
-} |