| Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| index c133788a1f9a2fa81d5a5ebb791b7f7702173bc7..0a2242477998b51f0e5c8b0db4dc789a28998829 100644
|
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| @@ -350,40 +350,14 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
|
|
| @override
|
| js.Expression visitTypeOperator(tree_ir.TypeOperator node) {
|
| - js.Expression value = visitExpression(node.value);
|
| - List<js.Expression> typeArguments =
|
| - node.typeArguments.map(visitExpression).toList();
|
| if (!node.isTypeTest) {
|
| giveup(node, 'type casts not implemented.');
|
| }
|
| DartType type = node.type;
|
| - // Note that the trivial (but special) cases of Object, dynamic, and Null
|
| - // are handled at build-time and must not occur in a TypeOperator.
|
| - assert(!type.isObject && !type.isDynamic);
|
| - if (type is InterfaceType) {
|
| + if (type is InterfaceType && type.isRaw) {
|
| glue.registerIsCheck(type, registry);
|
| - ClassElement clazz = type.element;
|
| -
|
| - // We use the helper:
|
| - //
|
| - // checkSubtype(value, $isT, typeArgs, $asT)
|
| - //
|
| - // Any of the last two arguments may be null if there are no type
|
| - // arguments, and/or if no substitution is required.
|
| -
|
| - js.Expression isT = js.string(glue.getTypeTestTag(type));
|
| -
|
| - js.Expression typeArgumentArray = typeArguments.isNotEmpty
|
| - ? new js.ArrayInitializer(typeArguments)
|
| - : new js.LiteralNull();
|
| -
|
| - js.Expression asT = glue.hasStrictSubtype(clazz)
|
| - ? js.string(glue.getTypeSubstitutionTag(clazz))
|
| - : new js.LiteralNull();
|
| -
|
| - return buildStaticHelperInvocation(
|
| - glue.getCheckSubtype(),
|
| - [value, isT, typeArgumentArray, asT]);
|
| + js.Expression value = visitExpression(node.receiver);
|
| + return js.js('!!#.#', [value, glue.getTypeTestTag(type)]);
|
| }
|
| return giveup(node, 'type check unimplemented for $type.');
|
| }
|
|
|