Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(360)

Unified Diff: pkg/compiler/lib/src/js/nodes.dart

Issue 922463002: Revert "Redo "Steps towards making dart2js JS AST templates an indepentent library."" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js/js_ast.dart ('k') | pkg/compiler/lib/src/js/printer.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js/nodes.dart
diff --git a/pkg/compiler/lib/src/js/nodes.dart b/pkg/compiler/lib/src/js/nodes.dart
index 92446fa8bf48b3d4faeefcfa0a2013d7b8ec4343..60b3a85976fcaa55fa3f74680b1c695510d715bf 100644
--- a/pkg/compiler/lib/src/js/nodes.dart
+++ b/pkg/compiler/lib/src/js/nodes.dart
@@ -2,7 +2,7 @@
// 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.
-part of js_ast;
+part of js;
abstract class NodeVisitor<T> {
T visitProgram(Program node);
@@ -29,6 +29,7 @@ abstract class NodeVisitor<T> {
T visitLiteralStatement(LiteralStatement node);
T visitDartYield(DartYield node);
+ T visitBlob(Blob node);
T visitLiteralExpression(LiteralExpression node);
T visitVariableDeclarationList(VariableDeclarationList node);
T visitAssignment(Assignment node);
@@ -108,6 +109,7 @@ class BaseVisitor<T> implements NodeVisitor<T> {
T visitDefault(Default node) => visitNode(node);
T visitExpression(Expression node) => visitNode(node);
+ T visitBlob(Blob node) => visitExpression(node);
T visitVariableReference(VariableReference node) => visitExpression(node);
T visitLiteralExpression(LiteralExpression node) => visitExpression(node);
@@ -171,14 +173,10 @@ class BaseVisitor<T> implements NodeVisitor<T> {
T visitDartYield(DartYield node) => visitStatement(node);
}
-/// This tag interface has no behaviour but must be implemented by any class
-/// that is to be stored on a [Node] as source information.
-abstract class JavaScriptNodeSourceInformation {}
-
abstract class Node {
- JavaScriptNodeSourceInformation get sourceInformation => _sourceInformation;
+ SourceInformation get sourceInformation => _sourceInformation;
- JavaScriptNodeSourceInformation _sourceInformation;
+ SourceInformation _sourceInformation;
accept(NodeVisitor visitor);
void visitChildren(NodeVisitor visitor);
@@ -189,8 +187,7 @@ abstract class Node {
// Returns a node equivalent to [this], but with new source position and end
// source position.
- Node withSourceInformation(
- JavaScriptNodeSourceInformation sourceInformation) {
+ Node withSourceInformation(SourceInformation sourceInformation) {
if (sourceInformation == _sourceInformation) {
return this;
}
@@ -525,8 +522,8 @@ class LiteralStatement extends Statement {
LiteralStatement _clone() => new LiteralStatement(code);
}
-// Not a real JavaScript node, but represents the yield statement from a dart
-// program translated to JavaScript.
+// Not a real javascript node, but represents the yield statement from a dart
+// program translated to javascript.
class DartYield extends Statement {
final Expression expression;
@@ -549,6 +546,25 @@ abstract class Expression extends Node {
Statement toStatement() => new ExpressionStatement(this);
}
+/// Wrap a CodeBuffer as an expression.
+class Blob extends Expression {
+ // TODO(ahe): This class is an aid to convert everything to ASTs, remove when
+ // not needed anymore.
+
+ final CodeBuffer buffer;
+
+ Blob(this.buffer);
+
+ accept(NodeVisitor visitor) => visitor.visitBlob(this);
+
+ void visitChildren(NodeVisitor visitor) {}
+
+ Blob _clone() => new Blob(buffer);
+
+ int get precedenceLevel => PRIMARY;
+
+}
+
class LiteralExpression extends Expression {
final String template;
final List<Expression> inputs;
@@ -931,12 +947,9 @@ class LiteralString extends Literal {
/**
* Constructs a LiteralString from a string value.
*
- * The constructor does not add the required quotes. If [value] is not
- * surrounded by quotes and property escaped, the resulting object is invalid
- * as a JS value.
- *
- * TODO(sra): Introduce variants for known valid strings that don't allocate a
- * new string just to add quotes.
+ * The constructor does not add the required quotes. If [value] is
+ * not surrounded by quotes, the resulting object is invalid as a JS
+ * value.
*/
LiteralString(this.value);
@@ -945,7 +958,7 @@ class LiteralString extends Literal {
}
class LiteralNumber extends Literal {
- final String value; // Must be a valid JavaScript number literal.
+ final String value;
LiteralNumber(this.value);
@@ -1114,7 +1127,7 @@ class RegExpLiteral extends Expression {
/**
* An asynchronous await.
*
- * Not part of JavaScript. We desugar this expression before outputting.
+ * Not part of javascript. We desugar this expression before outputting.
* Should only occur in a [Fun] with `asyncModifier` async or asyncStar.
*/
class Await extends Expression {
« no previous file with comments | « pkg/compiler/lib/src/js/js_ast.dart ('k') | pkg/compiler/lib/src/js/printer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698