| 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 import '../common.dart'; | 5 import '../common.dart'; |
| 6 import '../core_types.dart'; | 6 import '../core_types.dart'; |
| 7 import '../elements/elements.dart' show ErroneousElement; | 7 import '../elements/elements.dart' show ErroneousElement; |
| 8 import '../elements/entities.dart'; | 8 import '../elements/entities.dart'; |
| 9 import '../elements/resolution_types.dart' show MalformedType; | 9 import '../elements/resolution_types.dart' show MalformedType; |
| 10 import '../elements/types.dart'; | 10 import '../elements/types.dart'; |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 | 124 |
| 125 class CheckedModeHelpers { | 125 class CheckedModeHelpers { |
| 126 final CommonElements _commonElements; | 126 final CommonElements _commonElements; |
| 127 final BackendHelpers _helpers; | 127 final BackendHelpers _helpers; |
| 128 | 128 |
| 129 CheckedModeHelpers(this._commonElements, this._helpers); | 129 CheckedModeHelpers(this._commonElements, this._helpers); |
| 130 | 130 |
| 131 /// All the checked mode helpers. | 131 /// All the checked mode helpers. |
| 132 static const List<CheckedModeHelper> helpers = const <CheckedModeHelper>[ | 132 static const List<CheckedModeHelper> helpers = const <CheckedModeHelper>[ |
| 133 const MalformedCheckedModeHelper('checkMalformedType'), | 133 const MalformedCheckedModeHelper('checkMalformedType'), |
| 134 const CheckedModeHelper('voidTypeCheck'), | |
| 135 const CheckedModeHelper('stringTypeCast'), | 134 const CheckedModeHelper('stringTypeCast'), |
| 136 const CheckedModeHelper('stringTypeCheck'), | 135 const CheckedModeHelper('stringTypeCheck'), |
| 137 const CheckedModeHelper('doubleTypeCast'), | 136 const CheckedModeHelper('doubleTypeCast'), |
| 138 const CheckedModeHelper('doubleTypeCheck'), | 137 const CheckedModeHelper('doubleTypeCheck'), |
| 139 const CheckedModeHelper('numTypeCast'), | 138 const CheckedModeHelper('numTypeCast'), |
| 140 const CheckedModeHelper('numTypeCheck'), | 139 const CheckedModeHelper('numTypeCheck'), |
| 141 const CheckedModeHelper('boolTypeCast'), | 140 const CheckedModeHelper('boolTypeCast'), |
| 142 const CheckedModeHelper('boolTypeCheck'), | 141 const CheckedModeHelper('boolTypeCheck'), |
| 143 const CheckedModeHelper('intTypeCast'), | 142 const CheckedModeHelper('intTypeCast'), |
| 144 const CheckedModeHelper('intTypeCheck'), | 143 const CheckedModeHelper('intTypeCheck'), |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 | 209 |
| 211 String getCheckedModeHelperNameInternal(DartType type, | 210 String getCheckedModeHelperNameInternal(DartType type, |
| 212 {bool typeCast, bool nativeCheckOnly}) { | 211 {bool typeCast, bool nativeCheckOnly}) { |
| 213 assert(!type.isTypedef); | 212 assert(!type.isTypedef); |
| 214 if (type.isMalformed) { | 213 if (type.isMalformed) { |
| 215 // The same error is thrown for type test and type cast of a malformed | 214 // The same error is thrown for type test and type cast of a malformed |
| 216 // type so we only need one check method. | 215 // type so we only need one check method. |
| 217 return 'checkMalformedType'; | 216 return 'checkMalformedType'; |
| 218 } | 217 } |
| 219 | 218 |
| 220 if (type.isVoid) { | |
| 221 assert(!typeCast); // Cannot cast to void. | |
| 222 if (nativeCheckOnly) return null; | |
| 223 return 'voidTypeCheck'; | |
| 224 } | |
| 225 | |
| 226 if (type.isTypeVariable) { | 219 if (type.isTypeVariable) { |
| 227 return typeCast | 220 return typeCast |
| 228 ? 'subtypeOfRuntimeTypeCast' | 221 ? 'subtypeOfRuntimeTypeCast' |
| 229 : 'assertSubtypeOfRuntimeType'; | 222 : 'assertSubtypeOfRuntimeType'; |
| 230 } | 223 } |
| 231 | 224 |
| 232 if (type.isFunctionType) { | 225 if (type.isFunctionType) { |
| 233 return typeCast ? 'functionTypeCast' : 'functionTypeCheck'; | 226 return typeCast ? 'functionTypeCast' : 'functionTypeCheck'; |
| 234 } | 227 } |
| 235 | 228 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 | 297 |
| 305 if (nativeCheck) { | 298 if (nativeCheck) { |
| 306 // TODO(karlklose): can we get rid of this branch when we use | 299 // TODO(karlklose): can we get rid of this branch when we use |
| 307 // interceptors? | 300 // interceptors? |
| 308 return 'intercepted$suffix'; | 301 return 'intercepted$suffix'; |
| 309 } else { | 302 } else { |
| 310 return 'property$suffix'; | 303 return 'property$suffix'; |
| 311 } | 304 } |
| 312 } | 305 } |
| 313 } | 306 } |
| OLD | NEW |