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

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

Issue 917033002: 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 60b3a85976fcaa55fa3f74680b1c695510d715bf..92446fa8bf48b3d4faeefcfa0a2013d7b8ec4343 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;
+part of js_ast;
abstract class NodeVisitor<T> {
T visitProgram(Program node);
@@ -29,7 +29,6 @@ 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);
@@ -109,7 +108,6 @@ 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);
@@ -173,10 +171,14 @@ 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 {
- SourceInformation get sourceInformation => _sourceInformation;
+ JavaScriptNodeSourceInformation get sourceInformation => _sourceInformation;
- SourceInformation _sourceInformation;
+ JavaScriptNodeSourceInformation _sourceInformation;
accept(NodeVisitor visitor);
void visitChildren(NodeVisitor visitor);
@@ -187,7 +189,8 @@ abstract class Node {
// Returns a node equivalent to [this], but with new source position and end
// source position.
- Node withSourceInformation(SourceInformation sourceInformation) {
+ Node withSourceInformation(
+ JavaScriptNodeSourceInformation sourceInformation) {
if (sourceInformation == _sourceInformation) {
return this;
}
@@ -522,8 +525,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;
@@ -546,25 +549,6 @@ 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;
@@ -947,9 +931,12 @@ 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, the resulting object is invalid as a JS
- * 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.
*/
LiteralString(this.value);
@@ -958,7 +945,7 @@ class LiteralString extends Literal {
}
class LiteralNumber extends Literal {
- final String value;
+ final String value; // Must be a valid JavaScript number literal.
LiteralNumber(this.value);
@@ -1127,7 +1114,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