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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_builder.dart

Issue 694353007: Move dart2js from sdk/lib/_internal/compiler to pkg/compiler (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 part of dart2js.js_emitter;
6
7 /**
8 * A data structure for collecting fragments of a class definition.
9 */
10 class ClassBuilder {
11 final List<jsAst.Property> properties = <jsAst.Property>[];
12 final List<String> fields = <String>[];
13
14 String superName;
15 String functionType;
16 List<jsAst.Node> fieldMetadata;
17
18 final Element element;
19 final Namer namer;
20
21 /// Set to true by user if class is indistinguishable from its superclass.
22 bool isTrivial = false;
23
24 ClassBuilder(this.element, this.namer);
25
26 // Has the same signature as [DefineStubFunction].
27 jsAst.Property addProperty(String name, jsAst.Expression value) {
28 jsAst.Property property = new jsAst.Property(js.string(name), value);
29 properties.add(property);
30 return property;
31 }
32
33 void addField(String field) {
34 fields.add(field);
35 }
36
37 jsAst.ObjectInitializer toObjectInitializer() {
38 StringBuffer buffer = new StringBuffer();
39 if (superName != null) {
40 buffer.write('$superName');
41 if (functionType != null) {
42 buffer.write(':$functionType');
43 }
44 buffer.write(';');
45 }
46 buffer.writeAll(fields, ',');
47 var classData = js.string('$buffer');
48 if (fieldMetadata != null) {
49 // If we need to store fieldMetadata, classData is turned into an array,
50 // and the field metadata is appended. So if classData is just a string,
51 // there is no field metadata.
52 classData =
53 new jsAst.ArrayInitializer.from([classData]..addAll(fieldMetadata));
54 }
55 var fieldsAndProperties =
56 [new jsAst.Property(js.string(namer.classDescriptorProperty),
57 classData)]
58 ..addAll(properties);
59 return new jsAst.ObjectInitializer(fieldsAndProperties, isOneLiner: false);
60 }
61
62 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698