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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart

Issue 2941033002: Finish strong mode cleaning of dart2js. (Closed)
Patch Set: Add bug numbers and address comments. Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.js_emitter.full_emitter.class_emitter; 5 library dart2js.js_emitter.full_emitter.class_emitter;
6 6
7 import '../../common.dart'; 7 import '../../common.dart';
8 import '../../common/names.dart' show Names; 8 import '../../common/names.dart' show Names;
9 import '../../common_elements.dart'; 9 import '../../common_elements.dart';
10 import '../../elements/resolution_types.dart' show ResolutionDartType; 10 import '../../elements/resolution_types.dart' show ResolutionDartType;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 return false; 118 return false;
119 } else { 119 } else {
120 fields = container.fields; 120 fields = container.fields;
121 } 121 }
122 } else { 122 } else {
123 assert(container is Library); 123 assert(container is Library);
124 assert(emitStatics); 124 assert(emitStatics);
125 fields = container.staticFieldsForReflection; 125 fields = container.staticFieldsForReflection;
126 } 126 }
127 127
128 var fieldMetadata = []; 128 var fieldMetadata = <jsAst.Expression>[];
129 bool hasMetadata = false; 129 bool hasMetadata = false;
130 bool fieldsAdded = false; 130 bool fieldsAdded = false;
131 131
132 for (Field field in fields) { 132 for (Field field in fields) {
133 FieldEntity fieldElement = field.element; 133 FieldEntity fieldElement = field.element;
134 jsAst.Name name = field.name; 134 jsAst.Name name = field.name;
135 jsAst.Name accessorName = field.accessorName; 135 jsAst.Name accessorName = field.accessorName;
136 bool needsGetter = field.needsGetter; 136 bool needsGetter = field.needsGetter;
137 bool needsSetter = field.needsUncheckedSetter; 137 bool needsSetter = field.needsUncheckedSetter;
138 138
139 // Ignore needsCheckedSetter - that is handled below. 139 // Ignore needsCheckedSetter - that is handled below.
140 bool needsAccessor = (needsGetter || needsSetter); 140 bool needsAccessor = (needsGetter || needsSetter);
141 // We need to output the fields for non-native classes so we can auto- 141 // We need to output the fields for non-native classes so we can auto-
142 // generate the constructor. For native classes there are no 142 // generate the constructor. For native classes there are no
143 // constructors, so we don't need the fields unless we are generating 143 // constructors, so we don't need the fields unless we are generating
144 // accessors at runtime. 144 // accessors at runtime.
145 bool needsFieldsForConstructor = !emitStatics && !classIsNative; 145 bool needsFieldsForConstructor = !emitStatics && !classIsNative;
146 if (needsFieldsForConstructor || needsAccessor) { 146 if (needsFieldsForConstructor || needsAccessor) {
147 var metadata = 147 dynamic metadata =
148 task.metadataCollector.buildFieldMetadataFunction(fieldElement); 148 task.metadataCollector.buildFieldMetadataFunction(fieldElement);
149 if (metadata != null) { 149 if (metadata != null) {
150 hasMetadata = true; 150 hasMetadata = true;
151 } else { 151 } else {
152 metadata = new jsAst.LiteralNull(); 152 metadata = new jsAst.LiteralNull();
153 } 153 }
154 fieldMetadata.add(metadata); 154 fieldMetadata.add(metadata);
155 recordMangledField(fieldElement, accessorName, 155 recordMangledField(fieldElement, accessorName,
156 namer.privateName(fieldElement.memberName)); 156 namer.privateName(fieldElement.memberName));
157 List<jsAst.Literal> fieldNameParts = <jsAst.Literal>[]; 157 List<jsAst.Literal> fieldNameParts = <jsAst.Literal>[];
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 String reflectionName = emitter.getReflectionSelectorName(selector, name); 454 String reflectionName = emitter.getReflectionSelectorName(selector, name);
455 if (reflectionName != null) { 455 if (reflectionName != null) {
456 var reflectable = js( 456 var reflectable = js(
457 backend.mirrorsData.isMemberAccessibleByReflection(member) 457 backend.mirrorsData.isMemberAccessibleByReflection(member)
458 ? '1' 458 ? '1'
459 : '0'); 459 : '0');
460 builder.addPropertyByName('+$reflectionName', reflectable); 460 builder.addPropertyByName('+$reflectionName', reflectable);
461 } 461 }
462 } 462 }
463 } 463 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698