diff --git a/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java b/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java index 5524261a515..4cfd42b55c7 100644 --- a/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java +++ b/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java @@ -48,7 +48,7 @@ public class JsConstructExpressionVisitor extends RecursiveJsVisitor { } @Override - public void visitInvocation(JsInvocation x) { + public void visitInvocation(JsInvocation invocation) { containsInvocation = true; } diff --git a/src/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java b/src/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java index e2308a0344b..6789cd2bd71 100644 --- a/src/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java +++ b/src/com/google/dart/compiler/backend/js/JsFirstExpressionVisitor.java @@ -73,8 +73,8 @@ public class JsFirstExpressionVisitor extends RecursiveJsVisitor { } @Override - public void visitInvocation(JsInvocation x) { - accept(x.getQualifier()); + public void visitInvocation(JsInvocation invocation) { + accept(invocation.getQualifier()); } @Override diff --git a/src/com/google/dart/compiler/backend/js/JsPrecedenceVisitor.java b/src/com/google/dart/compiler/backend/js/JsPrecedenceVisitor.java index 77fcf9b83f6..3a2d8115da9 100644 --- a/src/com/google/dart/compiler/backend/js/JsPrecedenceVisitor.java +++ b/src/com/google/dart/compiler/backend/js/JsPrecedenceVisitor.java @@ -75,7 +75,7 @@ class JsPrecedenceVisitor extends JsVisitor { } @Override - public void visitInvocation(JsInvocation x) { + public void visitInvocation(JsInvocation invocation) { answer = 16; } diff --git a/src/com/google/dart/compiler/backend/js/JsToStringGenerationVisitor.java b/src/com/google/dart/compiler/backend/js/JsToStringGenerationVisitor.java index 7a02a4274e5..6977040853b 100644 --- a/src/com/google/dart/compiler/backend/js/JsToStringGenerationVisitor.java +++ b/src/com/google/dart/compiler/backend/js/JsToStringGenerationVisitor.java @@ -583,11 +583,11 @@ public class JsToStringGenerationVisitor extends JsVisitor { } @Override - public void visitInvocation(JsInvocation x) { - printPair(x, x.getQualifier()); + public void visitInvocation(JsInvocation invocation) { + printPair(invocation, invocation.getQualifier()); leftParen(); - printExpressions(x.getArguments()); + printExpressions(invocation.getArguments()); rightParen(); } @@ -621,9 +621,15 @@ public class JsToStringGenerationVisitor extends JsVisitor { } p.print('.'); } + + p.maybeIndent(); + beforeNodePrinted(nameRef); p.print(nameRef.getIdent()); } + protected void beforeNodePrinted(JsNode node) { + } + @Override public void visitNew(JsNew x) { p.print(CHARS_NEW); diff --git a/src/com/google/dart/compiler/backend/js/ast/ChameleonJsExpression.java b/src/com/google/dart/compiler/backend/js/ast/ChameleonJsExpression.java index 89fa1f4ada6..c50d40e8166 100644 --- a/src/com/google/dart/compiler/backend/js/ast/ChameleonJsExpression.java +++ b/src/com/google/dart/compiler/backend/js/ast/ChameleonJsExpression.java @@ -35,12 +35,17 @@ public class ChameleonJsExpression implements JsExpression { } @Override - public Object getSourceInfo() { - return expression.getSourceInfo(); + public Object getSource() { + return expression.getSource(); } @Override - public void setSourceInfo(Object info) { - expression.setSourceInfo(info); + public void setSource(Object info) { + expression.setSource(info); + } + + @Override + public JsExpression source(Object info) { + return expression.source(info); } } diff --git a/src/com/google/dart/compiler/backend/js/ast/JsExpression.java b/src/com/google/dart/compiler/backend/js/ast/JsExpression.java index b4f8828c751..5209a21eb64 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsExpression.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsExpression.java @@ -1,9 +1,10 @@ package com.google.dart.compiler.backend.js.ast; -import com.google.dart.compiler.common.HasSourceInfo; - -public interface JsExpression extends JsNode, HasSourceInfo { +public interface JsExpression extends JsNode { boolean isLeaf(); JsStatement makeStmt(); + + @Override + JsExpression source(Object info); } diff --git a/src/com/google/dart/compiler/backend/js/ast/JsExpressionImpl.java b/src/com/google/dart/compiler/backend/js/ast/JsExpressionImpl.java index 8dba62f3d04..f1f5bed3399 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsExpressionImpl.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsExpressionImpl.java @@ -36,4 +36,10 @@ abstract class JsExpressionImpl extends SourceInfoAwareJsNode implements JsExpre return arguments; } } + + @Override + public JsExpression source(Object info) { + setSource(info); + return this; + } } diff --git a/src/com/google/dart/compiler/backend/js/ast/JsExpressionStatement.java b/src/com/google/dart/compiler/backend/js/ast/JsExpressionStatement.java index 3df96ca3c86..85a7fe6bee4 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsExpressionStatement.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsExpressionStatement.java @@ -26,12 +26,17 @@ public final class JsExpressionStatement extends AbstractNode implements JsState } @Override - public Object getSourceInfo() { + public Object getSource() { return null; } @Override - public void setSourceInfo(Object info) { + public void setSource(Object info) { + throw new IllegalStateException("You must not set source info for JsExpressionStatement, set for expression"); + } + + @Override + public JsNode source(Object info) { throw new IllegalStateException("You must not set source info for JsExpressionStatement, set for expression"); } } diff --git a/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java b/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java index 34da9bb7191..d7569b12f4b 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java @@ -10,9 +10,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -/** - * Represents a JavaScript invocation. - */ public final class JsInvocation extends JsExpressionImpl.JsExpressionHasArguments { private JsExpression qualifier; diff --git a/src/com/google/dart/compiler/backend/js/ast/JsNode.java b/src/com/google/dart/compiler/backend/js/ast/JsNode.java index 10b9dc6e73e..6d2ad279985 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsNode.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsNode.java @@ -4,16 +4,27 @@ package com.google.dart.compiler.backend.js.ast; -import com.google.dart.compiler.common.HasSourceInfo; - -public interface JsNode extends HasSourceInfo { +public interface JsNode { /** * Causes this object to have the visitor visit itself and its children. * * @param visitor the visitor that should traverse this node - * */ void accept(JsVisitor visitor); void acceptChildren(JsVisitor visitor); + + /** + * Return the source info associated with this object. + */ + Object getSource(); + + /** + * Set the source info associated with this object. + * + * @param info + */ + void setSource(Object info); + + JsNode source(Object info); } diff --git a/src/com/google/dart/compiler/backend/js/ast/JsVisitor.java b/src/com/google/dart/compiler/backend/js/ast/JsVisitor.java index 68df956b151..6d66d655981 100644 --- a/src/com/google/dart/compiler/backend/js/ast/JsVisitor.java +++ b/src/com/google/dart/compiler/backend/js/ast/JsVisitor.java @@ -105,8 +105,8 @@ public abstract class JsVisitor { visitElement(x); } - public void visitInvocation(JsInvocation x) { - visitElement(x); + public void visitInvocation(JsInvocation invocation) { + visitElement(invocation); } public void visitLabel(JsLabel x) { diff --git a/src/com/google/dart/compiler/backend/js/ast/SourceInfoAwareJsNode.java b/src/com/google/dart/compiler/backend/js/ast/SourceInfoAwareJsNode.java index 0c5cffa1e77..bfed21105a7 100644 --- a/src/com/google/dart/compiler/backend/js/ast/SourceInfoAwareJsNode.java +++ b/src/com/google/dart/compiler/backend/js/ast/SourceInfoAwareJsNode.java @@ -1,19 +1,25 @@ package com.google.dart.compiler.backend.js.ast; abstract class SourceInfoAwareJsNode extends AbstractNode { - private Object sourceInfo; + private Object source; @Override - public Object getSourceInfo() { - return sourceInfo; + public Object getSource() { + return source; } @Override - public void setSourceInfo(Object info) { - sourceInfo = info; + public void setSource(Object info) { + source = info; } @Override public void acceptChildren(JsVisitor visitor) { } + + @Override + public JsNode source(Object info) { + source = info; + return this; + } } \ No newline at end of file diff --git a/src/com/google/dart/compiler/common/HasSourceInfo.java b/src/com/google/dart/compiler/common/HasSourceInfo.java deleted file mode 100644 index 251f72b71f7..00000000000 --- a/src/com/google/dart/compiler/common/HasSourceInfo.java +++ /dev/null @@ -1,18 +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.common; - -public interface HasSourceInfo { - /** - * Return the source info associated with this object. - */ - Object getSourceInfo(); - - /** - * Set the source info associated with this object. - * @param info - */ - void setSourceInfo(Object info); -} diff --git a/src/com/google/dart/compiler/util/TextOutput.java b/src/com/google/dart/compiler/util/TextOutput.java index fdacbc4a284..9b6772551db 100644 --- a/src/com/google/dart/compiler/util/TextOutput.java +++ b/src/com/google/dart/compiler/util/TextOutput.java @@ -42,6 +42,8 @@ public interface TextOutput { void setOutListener(OutListener outListener); + void maybeIndent(); + public interface OutListener { void newLined(); diff --git a/src/com/google/dart/compiler/util/TextOutputImpl.java b/src/com/google/dart/compiler/util/TextOutputImpl.java index f1a85ee4240..2f1d041056f 100644 --- a/src/com/google/dart/compiler/util/TextOutputImpl.java +++ b/src/com/google/dart/compiler/util/TextOutputImpl.java @@ -146,7 +146,8 @@ public class TextOutputImpl implements TextOutput { } } - private void maybeIndent() { + @Override + public void maybeIndent() { if (justNewlined && !compact) { printAndCount(indents[identLevel]); justNewlined = false;