| Index: sdk/lib/_internal/compiler/implementation/ssa/codegen.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/ssa/codegen.dart (revision 16252)
|
| +++ sdk/lib/_internal/compiler/implementation/ssa/codegen.dart (working copy)
|
| @@ -2291,6 +2291,11 @@
|
| push(new js.Binary('==', pop(), new js.LiteralNull()));
|
| }
|
|
|
| + void checkNonNull(HInstruction input) {
|
| + use(input);
|
| + push(new js.Binary('!=', pop(), new js.LiteralNull()));
|
| + }
|
| +
|
| void checkFunction(HInstruction input, DartType type) {
|
| checkTypeOf(input, '===', 'function');
|
| js.Expression functionTest = pop();
|
| @@ -2415,6 +2420,12 @@
|
| || Elements.isListSupertype(element, compiler)) {
|
| handleListOrSupertypeCheck(input, type);
|
| attachLocationToLast(node);
|
| + } else if (element.isTypedef()) {
|
| + checkNonNull(input);
|
| + js.Expression nullTest = pop();
|
| + checkType(input, type);
|
| + push(new js.Binary('&&', nullTest, pop()));
|
| + attachLocationToLast(node);
|
| } else if (types[input].canBePrimitive() || types[input].canBeNull()) {
|
| checkObject(input, '===');
|
| js.Expression objectTest = pop();
|
|
|