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

Unified Diff: pkg/compiler/lib/src/js_backend/constant_emitter.dart

Issue 1198293002: dart2js: Use an abstract Name class for names in the generated JavaScript ast. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fix tests Created 5 years, 6 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
Index: pkg/compiler/lib/src/js_backend/constant_emitter.dart
diff --git a/pkg/compiler/lib/src/js_backend/constant_emitter.dart b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
index f889a942a74ca98209c0419cec1ee11d858c6c16..3f38a2899a048e1bdb715181ca9c3d259e67f338 100644
--- a/pkg/compiler/lib/src/js_backend/constant_emitter.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
@@ -6,6 +6,8 @@ part of js_backend;
typedef jsAst.Expression _ConstantReferenceGenerator(ConstantValue constant);
+typedef jsAst.Expression _ConstantListGenerator(jsAst.Expression array);
+
/**
* Generates the JavaScript expressions for constants.
*
@@ -24,7 +26,7 @@ class ConstantEmitter
final Compiler compiler;
final Namer namer;
final _ConstantReferenceGenerator constantReferenceGenerator;
- final jsAst.Template makeConstantListTemplate;
+ final _ConstantListGenerator makeConstantList;
/**
* The given [constantReferenceGenerator] function must, when invoked with a
@@ -35,7 +37,7 @@ class ConstantEmitter
this.compiler,
this.namer,
jsAst.Expression this.constantReferenceGenerator(ConstantValue constant),
- this.makeConstantListTemplate);
+ this.makeConstantList);
/**
* Constructs a literal expression that evaluates to the constant. Uses a
@@ -160,7 +162,7 @@ class ConstantEmitter
.map(constantReferenceGenerator)
.toList(growable: false);
jsAst.ArrayInitializer array = new jsAst.ArrayInitializer(elements);
- jsAst.Expression value = makeConstantListTemplate.instantiate([array]);
+ jsAst.Expression value = makeConstantList(array);
return maybeAddTypeArguments(constant.type, value);
}
@@ -250,10 +252,9 @@ class ConstantEmitter
@override
jsAst.Expression visitType(TypeConstantValue constant, [_]) {
DartType type = constant.representedType;
- String name = namer.runtimeTypeName(type.element);
- jsAst.Expression typeName = new jsAst.LiteralString("'$name'");
+ jsAst.Name typeName = namer.runtimeTypeName(type.element);
return new jsAst.Call(getHelperProperty(backend.getCreateRuntimeType()),
- [typeName]);
+ [js.quoteName(typeName)]);
}
@override
@@ -269,6 +270,7 @@ class ConstantEmitter
case SyntheticConstantKind.EMPTY_VALUE:
return new jsAst.LiteralNumber('0');
case SyntheticConstantKind.TYPEVARIABLE_REFERENCE:
+ case SyntheticConstantKind.NAME:
return constant.payload;
default:
compiler.internalError(NO_LOCATION_SPANNABLE,

Powered by Google App Engine
This is Rietveld 408576698