| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 part of dart2js.js_emitter.program_builder; | 5 part of dart2js.js_emitter.program_builder; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * [member] is a field (instance, static, or top level). | 8 * [member] is a field (instance, static, or top level). |
| 9 * | 9 * |
| 10 * [name] is the field name that the [Namer] has picked for this field's | 10 * [name] is the field name that the [Namer] has picked for this field's |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 needsGetter = fieldNeedsGetter(field); | 92 needsGetter = fieldNeedsGetter(field); |
| 93 needsSetter = fieldNeedsSetter(field); | 93 needsSetter = fieldNeedsSetter(field); |
| 94 } | 94 } |
| 95 | 95 |
| 96 if ((isInstantiated && !backend.isNative(holder)) | 96 if ((isInstantiated && !backend.isNative(holder)) |
| 97 || needsGetter | 97 || needsGetter |
| 98 || needsSetter) { | 98 || needsSetter) { |
| 99 js.Name accessorName = namer.fieldAccessorName(field); | 99 js.Name accessorName = namer.fieldAccessorName(field); |
| 100 js.Name fieldName = namer.fieldPropertyName(field); | 100 js.Name fieldName = namer.fieldPropertyName(field); |
| 101 bool needsCheckedSetter = false; | 101 bool needsCheckedSetter = false; |
| 102 if (compiler.enableTypeAssertions | 102 if (compiler.options.enableTypeAssertions |
| 103 && needsSetter | 103 && needsSetter |
| 104 && !canAvoidGeneratedCheckedSetter(field)) { | 104 && !canAvoidGeneratedCheckedSetter(field)) { |
| 105 needsCheckedSetter = true; | 105 needsCheckedSetter = true; |
| 106 needsSetter = false; | 106 needsSetter = false; |
| 107 } | 107 } |
| 108 // Getters and setters with suffixes will be generated dynamically. | 108 // Getters and setters with suffixes will be generated dynamically. |
| 109 f(field, fieldName, accessorName, needsGetter, needsSetter, | 109 f(field, fieldName, accessorName, needsGetter, needsSetter, |
| 110 needsCheckedSetter); | 110 needsCheckedSetter); |
| 111 } | 111 } |
| 112 } | 112 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 field is ClosureFieldElement; | 161 field is ClosureFieldElement; |
| 162 } | 162 } |
| 163 | 163 |
| 164 bool canAvoidGeneratedCheckedSetter(VariableElement member) { | 164 bool canAvoidGeneratedCheckedSetter(VariableElement member) { |
| 165 // We never generate accessors for top-level/static fields. | 165 // We never generate accessors for top-level/static fields. |
| 166 if (!member.isInstanceMember) return true; | 166 if (!member.isInstanceMember) return true; |
| 167 DartType type = member.type; | 167 DartType type = member.type; |
| 168 return type.treatAsDynamic || type.isObject; | 168 return type.treatAsDynamic || type.isObject; |
| 169 } | 169 } |
| 170 } | 170 } |
| OLD | NEW |