simplify AST (idea like)

This commit is contained in:
develar
2012-10-25 10:17:03 +04:00
parent c1cc409b29
commit b5a3fbeca4
23 changed files with 24 additions and 31 deletions
@@ -1,10 +1,9 @@
package com.google.dart.compiler.backend.js.ast;
import com.google.dart.compiler.backend.js.JsToStringGenerationVisitor;
import com.google.dart.compiler.common.HasSourceInfo;
import com.google.dart.compiler.util.TextOutputImpl;
abstract class AbstractNode implements JsNode, HasSourceInfo {
abstract class AbstractNode implements JsNode {
@Override
public String toString() {
TextOutputImpl out = new TextOutputImpl();
@@ -12,7 +12,7 @@ import java.util.List;
/**
* Represents a JavaScript block statement.
*/
public class JsBlock extends JsNodeImpl implements JsStatement {
public class JsBlock extends SourceInfoAwareJsNode implements JsStatement {
private final List<JsStatement> statements;
public JsBlock() {
@@ -7,7 +7,7 @@ package com.google.dart.compiler.backend.js.ast;
/**
* Represents a JavaScript catch clause.
*/
public class JsCatch extends JsNodeImpl implements HasCondition {
public class JsCatch extends SourceInfoAwareJsNode implements HasCondition {
protected final JsCatchScope scope;
private JsBlock body;
@@ -6,7 +6,7 @@ package com.google.dart.compiler.backend.js.ast;
import org.jetbrains.annotations.Nullable;
public class JsContinue extends JsNodeImpl implements JsStatement {
public class JsContinue extends SourceInfoAwareJsNode implements JsStatement {
protected final String label;
public JsContinue() {
@@ -7,7 +7,7 @@ package com.google.dart.compiler.backend.js.ast;
/**
* Represents a JavaScript debugger statement.
*/
public class JsDebugger extends JsNodeImpl implements JsStatement {
public class JsDebugger extends SourceInfoAwareJsNode implements JsStatement {
public JsDebugger() {
}
@@ -4,7 +4,7 @@
package com.google.dart.compiler.backend.js.ast;
public class JsEmpty extends JsNodeImpl implements JsStatement {
public class JsEmpty extends SourceInfoAwareJsNode implements JsStatement {
JsEmpty() {
}
@@ -6,10 +6,7 @@ package com.google.dart.compiler.backend.js.ast;
import java.util.List;
abstract class JsExpressionImpl extends JsNodeImpl implements JsExpression {
protected JsExpressionImpl() {
}
abstract class JsExpressionImpl extends SourceInfoAwareJsNode implements JsExpression {
/**
* Determines whether or not this expression is a leaf, such as a
* {@link JsNameRef}, {@link JsLiteral.JsBooleanLiteral}, and so on. Leaf expressions
@@ -15,7 +15,7 @@ package com.google.dart.compiler.backend.js.ast;
* Note that any of the parts of the <code>for</code> loop header can be
* <code>null</code>, although the body will never be null.
*/
public class JsFor extends JsNodeImpl implements JsStatement {
public class JsFor extends SourceInfoAwareJsNode implements JsStatement {
private JsStatement body;
private JsExpression condition;
private JsExpression incrementExpression;
@@ -4,7 +4,7 @@
package com.google.dart.compiler.backend.js.ast;
public class JsForIn extends JsNodeImpl implements JsStatement {
public class JsForIn extends SourceInfoAwareJsNode implements JsStatement {
private JsStatement body;
private JsExpression iterExpression;
private JsExpression objectExpression;
@@ -7,7 +7,7 @@ package com.google.dart.compiler.backend.js.ast;
/**
* Represents a JavaScript if statement.
*/
public final class JsIf extends JsNodeImpl implements JsStatement {
public final class JsIf extends SourceInfoAwareJsNode implements JsStatement {
private JsExpression ifExpression;
private JsStatement thenStatement;
private JsStatement elseStatement;
@@ -9,7 +9,7 @@ import com.google.dart.compiler.common.Symbol;
/**
* Represents a JavaScript label statement.
*/
public class JsLabel extends JsNodeImpl implements JsStatement, HasName {
public class JsLabel extends SourceInfoAwareJsNode implements JsStatement, HasName {
private final JsName label;
private JsStatement statement;
@@ -9,7 +9,7 @@ import com.google.dart.compiler.common.Symbol;
/**
* A JavaScript parameter.
*/
public final class JsParameter extends JsNodeImpl implements HasName {
public final class JsParameter extends SourceInfoAwareJsNode implements HasName {
private final JsName name;
public JsParameter(JsName name) {
@@ -17,7 +17,7 @@ import static com.google.dart.compiler.backend.js.ast.JsNumberLiteral.JsIntLiter
/**
* A JavaScript program.
*/
public final class JsProgram extends JsNodeImpl {
public final class JsProgram extends SourceInfoAwareJsNode {
private final JsEmpty emptyStatement;
private JsProgramFragment[] fragments;
@@ -7,7 +7,7 @@ package com.google.dart.compiler.backend.js.ast;
/**
* One independently loadable fragment of a {@link JsProgram}.
*/
public class JsProgramFragment extends JsNodeImpl {
public class JsProgramFragment extends SourceInfoAwareJsNode {
private final JsGlobalBlock globalBlock;
public JsProgramFragment() {
@@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull;
/**
* Used in object literals to specify property values by name.
*/
public class JsPropertyInitializer extends JsNodeImpl {
public class JsPropertyInitializer extends SourceInfoAwareJsNode {
private JsExpression labelExpr;
private JsExpression valueExpr;
@@ -7,7 +7,7 @@ package com.google.dart.compiler.backend.js.ast;
/**
* A JavaScript return statement.
*/
public final class JsReturn extends JsNodeImpl implements JsStatement {
public final class JsReturn extends SourceInfoAwareJsNode implements JsStatement {
private JsExpression expression;
public JsReturn() {
@@ -10,7 +10,7 @@ import java.util.List;
/**
* A JavaScript switch statement.
*/
public class JsSwitch extends JsNodeImpl implements JsStatement {
public class JsSwitch extends SourceInfoAwareJsNode implements JsStatement {
private final List<JsSwitchMember> cases = new ArrayList<JsSwitchMember>();
private JsExpression expression;
@@ -11,7 +11,7 @@ import java.util.List;
/**
* A member/case in a JavaScript switch object.
*/
public abstract class JsSwitchMember extends JsNodeImpl {
public abstract class JsSwitchMember extends SourceInfoAwareJsNode {
protected final List<JsStatement> statements = new SmartList<JsStatement>();
protected JsSwitchMember() {
@@ -4,7 +4,7 @@
package com.google.dart.compiler.backend.js.ast;
public class JsThrow extends JsNodeImpl implements JsStatement {
public class JsThrow extends SourceInfoAwareJsNode implements JsStatement {
private JsExpression expression;
public JsThrow() {
@@ -12,7 +12,7 @@ import java.util.List;
/**
* A JavaScript <code>try</code> statement.
*/
public class JsTry extends JsNodeImpl implements JsStatement {
public class JsTry extends SourceInfoAwareJsNode implements JsStatement {
private final List<JsCatch> catches;
private JsBlock finallyBlock;
private JsBlock tryBlock;
@@ -16,7 +16,7 @@ import java.util.List;
/**
* A JavaScript <code>var</code> statement.
*/
public class JsVars extends JsNodeImpl implements JsStatement, Iterable<JsVars.JsVar> {
public class JsVars extends SourceInfoAwareJsNode implements JsStatement, Iterable<JsVars.JsVar> {
private final List<JsVar> vars;
private final boolean multiline;
@@ -49,7 +49,7 @@ public class JsVars extends JsNodeImpl implements JsStatement, Iterable<JsVars.J
/**
* A var declared using the JavaScript <code>var</code> statement.
*/
public static class JsVar extends JsNodeImpl implements HasName {
public static class JsVar extends SourceInfoAwareJsNode implements HasName {
private final JsName name;
private JsExpression initExpression;
@@ -7,7 +7,7 @@ package com.google.dart.compiler.backend.js.ast;
/**
* A JavaScript <code>while</code> statement.
*/
public class JsWhile extends JsNodeImpl implements JsStatement {
public class JsWhile extends SourceInfoAwareJsNode implements JsStatement {
protected JsStatement body;
protected JsExpression condition;
@@ -1,11 +1,8 @@
package com.google.dart.compiler.backend.js.ast;
abstract class JsNodeImpl extends AbstractNode {
abstract class SourceInfoAwareJsNode extends AbstractNode {
private Object sourceInfo;
protected JsNodeImpl() {
}
@Override
public Object getSourceInfo() {
return sourceInfo;