| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |