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

Unified Diff: pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.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_emitter/old_emitter/class_builder.dart
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
index a8b4cddf9f09bb01c77613883276ffdab694474c..4d69d92433493ce10167ae6b823a8d4cafe03342 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/class_builder.dart
@@ -11,16 +11,29 @@ class ClassBuilder {
final List<jsAst.Property> properties = <jsAst.Property>[];
final List<jsAst.Literal> fields = <jsAst.Literal>[];
- String superName;
+ jsAst.Name superName;
jsAst.Node functionType;
List<jsAst.Node> fieldMetadata;
final Element element;
final Namer namer;
+ final bool isForActualClass;
- ClassBuilder(this.element, this.namer);
+ ClassBuilder(this.element, this.namer, this.isForActualClass);
- jsAst.Property addProperty(String name, jsAst.Expression value) {
+ ClassBuilder.forClass(ClassElement cls, this.namer)
+ : isForActualClass = true,
+ element = cls;
+
+ ClassBuilder.forStatics(this.element, this.namer) : isForActualClass = false;
+
+ jsAst.Property addProperty(jsAst.Literal name, jsAst.Expression value) {
+ jsAst.Property property = new jsAst.Property(js.quoteName(name), value);
+ properties.add(property);
+ return property;
+ }
+
+ jsAst.Property addPropertyByName(String name, jsAst.Expression value) {
jsAst.Property property = new jsAst.Property(js.string(name), value);
properties.add(property);
return property;
@@ -42,12 +55,14 @@ class ClassBuilder {
jsAst.ObjectInitializer toObjectInitializer(
{bool emitClassDescriptor: true}) {
List<jsAst.Literal> parts = <jsAst.Literal>[];
- if (superName != null) {
- parts.add(js.stringPart(superName));
- if (functionType != null) {
- // See [functionTypeEncodingDescription] above.
- parts.add(js.stringPart(':'));
- parts.add(functionType);
+ if (isForActualClass) {
+ if (superName != null) {
+ parts.add(superName);
+ if (functionType != null) {
+ // See [functionTypeEncodingDescription] above.
+ parts.add(js.stringPart(':'));
+ parts.add(functionType);
+ }
}
parts.add(js.stringPart(';'));
}

Powered by Google App Engine
This is Rietveld 408576698