| Index: pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart b/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| index a40caad790d64a0eaf8abea71e5a8e16bcbfaca8..409c44dff81307d778ff3e46c1ccdc69fe75bd80 100644
|
| --- a/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart
|
| @@ -17,8 +17,8 @@ class CheckedModeHelper {
|
|
|
| CallStructure get callStructure => CallStructure.ONE_ARG;
|
|
|
| - jsAst.Expression generateCall(SsaCodeGenerator codegen,
|
| - HTypeConversion node) {
|
| + jsAst.Expression generateCall(
|
| + SsaCodeGenerator codegen, HTypeConversion node) {
|
| StaticUse staticUse = getStaticUse(codegen.compiler);
|
| codegen.registry.registerStaticUse(staticUse);
|
| List<jsAst.Expression> arguments = <jsAst.Expression>[];
|
| @@ -31,46 +31,46 @@ class CheckedModeHelper {
|
| }
|
|
|
| void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| - HTypeConversion node,
|
| - List<jsAst.Expression> arguments) {
|
| + HTypeConversion node, List<jsAst.Expression> arguments) {
|
| // No additional arguments needed.
|
| }
|
|
|
| - static const List<CheckedModeHelper> helpers = const <CheckedModeHelper> [
|
| - const MalformedCheckedModeHelper('checkMalformedType'),
|
| - const CheckedModeHelper('voidTypeCheck'),
|
| - const CheckedModeHelper('stringTypeCast'),
|
| - const CheckedModeHelper('stringTypeCheck'),
|
| - const CheckedModeHelper('doubleTypeCast'),
|
| - const CheckedModeHelper('doubleTypeCheck'),
|
| - const CheckedModeHelper('numTypeCast'),
|
| - const CheckedModeHelper('numTypeCheck'),
|
| - const CheckedModeHelper('boolTypeCast'),
|
| - const CheckedModeHelper('boolTypeCheck'),
|
| - const CheckedModeHelper('intTypeCast'),
|
| - const CheckedModeHelper('intTypeCheck'),
|
| - const PropertyCheckedModeHelper('numberOrStringSuperNativeTypeCast'),
|
| - const PropertyCheckedModeHelper('numberOrStringSuperNativeTypeCheck'),
|
| - const PropertyCheckedModeHelper('numberOrStringSuperTypeCast'),
|
| - const PropertyCheckedModeHelper('numberOrStringSuperTypeCheck'),
|
| - const PropertyCheckedModeHelper('stringSuperNativeTypeCast'),
|
| - const PropertyCheckedModeHelper('stringSuperNativeTypeCheck'),
|
| - const PropertyCheckedModeHelper('stringSuperTypeCast'),
|
| - const PropertyCheckedModeHelper('stringSuperTypeCheck'),
|
| - const CheckedModeHelper('listTypeCast'),
|
| - const CheckedModeHelper('listTypeCheck'),
|
| - const PropertyCheckedModeHelper('listSuperNativeTypeCast'),
|
| - const PropertyCheckedModeHelper('listSuperNativeTypeCheck'),
|
| - const PropertyCheckedModeHelper('listSuperTypeCast'),
|
| - const PropertyCheckedModeHelper('listSuperTypeCheck'),
|
| - const PropertyCheckedModeHelper('interceptedTypeCast'),
|
| - const PropertyCheckedModeHelper('interceptedTypeCheck'),
|
| - const SubtypeCheckedModeHelper('subtypeCast'),
|
| - const SubtypeCheckedModeHelper('assertSubtype'),
|
| - const TypeVariableCheckedModeHelper('subtypeOfRuntimeTypeCast'),
|
| - const TypeVariableCheckedModeHelper('assertSubtypeOfRuntimeType'),
|
| - const PropertyCheckedModeHelper('propertyTypeCast'),
|
| - const PropertyCheckedModeHelper('propertyTypeCheck')];
|
| + static const List<CheckedModeHelper> helpers = const <CheckedModeHelper>[
|
| + const MalformedCheckedModeHelper('checkMalformedType'),
|
| + const CheckedModeHelper('voidTypeCheck'),
|
| + const CheckedModeHelper('stringTypeCast'),
|
| + const CheckedModeHelper('stringTypeCheck'),
|
| + const CheckedModeHelper('doubleTypeCast'),
|
| + const CheckedModeHelper('doubleTypeCheck'),
|
| + const CheckedModeHelper('numTypeCast'),
|
| + const CheckedModeHelper('numTypeCheck'),
|
| + const CheckedModeHelper('boolTypeCast'),
|
| + const CheckedModeHelper('boolTypeCheck'),
|
| + const CheckedModeHelper('intTypeCast'),
|
| + const CheckedModeHelper('intTypeCheck'),
|
| + const PropertyCheckedModeHelper('numberOrStringSuperNativeTypeCast'),
|
| + const PropertyCheckedModeHelper('numberOrStringSuperNativeTypeCheck'),
|
| + const PropertyCheckedModeHelper('numberOrStringSuperTypeCast'),
|
| + const PropertyCheckedModeHelper('numberOrStringSuperTypeCheck'),
|
| + const PropertyCheckedModeHelper('stringSuperNativeTypeCast'),
|
| + const PropertyCheckedModeHelper('stringSuperNativeTypeCheck'),
|
| + const PropertyCheckedModeHelper('stringSuperTypeCast'),
|
| + const PropertyCheckedModeHelper('stringSuperTypeCheck'),
|
| + const CheckedModeHelper('listTypeCast'),
|
| + const CheckedModeHelper('listTypeCheck'),
|
| + const PropertyCheckedModeHelper('listSuperNativeTypeCast'),
|
| + const PropertyCheckedModeHelper('listSuperNativeTypeCheck'),
|
| + const PropertyCheckedModeHelper('listSuperTypeCast'),
|
| + const PropertyCheckedModeHelper('listSuperTypeCheck'),
|
| + const PropertyCheckedModeHelper('interceptedTypeCast'),
|
| + const PropertyCheckedModeHelper('interceptedTypeCheck'),
|
| + const SubtypeCheckedModeHelper('subtypeCast'),
|
| + const SubtypeCheckedModeHelper('assertSubtype'),
|
| + const TypeVariableCheckedModeHelper('subtypeOfRuntimeTypeCast'),
|
| + const TypeVariableCheckedModeHelper('assertSubtypeOfRuntimeType'),
|
| + const PropertyCheckedModeHelper('propertyTypeCast'),
|
| + const PropertyCheckedModeHelper('propertyTypeCheck')
|
| + ];
|
| }
|
|
|
| class MalformedCheckedModeHelper extends CheckedModeHelper {
|
| @@ -79,8 +79,7 @@ class MalformedCheckedModeHelper extends CheckedModeHelper {
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| - HTypeConversion node,
|
| - List<jsAst.Expression> arguments) {
|
| + HTypeConversion node, List<jsAst.Expression> arguments) {
|
| ErroneousElement element = node.typeExpression.element;
|
| arguments.add(js.escapedString(element.message));
|
| }
|
| @@ -92,8 +91,7 @@ class PropertyCheckedModeHelper extends CheckedModeHelper {
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| - HTypeConversion node,
|
| - List<jsAst.Expression> arguments) {
|
| + HTypeConversion node, List<jsAst.Expression> arguments) {
|
| DartType type = node.typeExpression;
|
| jsAst.Name additionalArgument = codegen.backend.namer.operatorIsType(type);
|
| arguments.add(js.quoteName(additionalArgument));
|
| @@ -106,8 +104,7 @@ class TypeVariableCheckedModeHelper extends CheckedModeHelper {
|
| CallStructure get callStructure => CallStructure.TWO_ARGS;
|
|
|
| void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| - HTypeConversion node,
|
| - List<jsAst.Expression> arguments) {
|
| + HTypeConversion node, List<jsAst.Expression> arguments) {
|
| assert(node.typeExpression.isTypeVariable);
|
| codegen.use(node.typeRepresentation);
|
| arguments.add(codegen.pop());
|
| @@ -120,8 +117,7 @@ class SubtypeCheckedModeHelper extends CheckedModeHelper {
|
| CallStructure get callStructure => const CallStructure.unnamed(4);
|
|
|
| void generateAdditionalArguments(SsaCodeGenerator codegen,
|
| - HTypeConversion node,
|
| - List<jsAst.Expression> arguments) {
|
| + HTypeConversion node, List<jsAst.Expression> arguments) {
|
| DartType type = node.typeExpression;
|
| Element element = type.element;
|
| jsAst.Name isField = codegen.backend.namer.operatorIs(element);
|
|
|