| Index: pkg/compiler/lib/src/ssa/builder.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
|
| index 1b3e19403be62a4e51ea57adb3180420d377d313..205660e6ccfa62eeea33be60d489f92404d507fe 100644
|
| --- a/pkg/compiler/lib/src/ssa/builder.dart
|
| +++ b/pkg/compiler/lib/src/ssa/builder.dart
|
| @@ -1558,6 +1558,11 @@ class SsaBuilder extends ast.Visitor
|
| assert(type != null);
|
| type = localsHandler.substInContext(type);
|
| HInstruction other = buildTypeConversion(original, type, kind);
|
| + // TODO(johnniwinther): This operation on `registry` may be inconsistent.
|
| + // If it is needed then it seems likely that similar invocations of
|
| + // `buildTypeConversion` in `SsaBuilder.visitAs` should also be followed by
|
| + // a similar operation on `registry`; otherwise, this one might not be
|
| + // needed.
|
| registry?.registerTypeUse(new TypeUse.isCheck(type));
|
| return other;
|
| }
|
| @@ -2462,15 +2467,13 @@ class SsaBuilder extends ast.Visitor
|
| void visitAs(ast.Send node, ast.Node expression, DartType type, _) {
|
| HInstruction expressionInstruction = visitAndPop(expression);
|
| if (type.isMalformed) {
|
| - String message;
|
| if (type is MalformedType) {
|
| ErroneousElement element = type.element;
|
| - message = element.message;
|
| + generateTypeError(node, element.message);
|
| } else {
|
| assert(type is MethodTypeVariableType);
|
| - message = "Method type variables are not reified.";
|
| + stack.add(expressionInstruction);
|
| }
|
| - generateTypeError(node, message);
|
| } else {
|
| HInstruction converted = buildTypeConversion(expressionInstruction,
|
| localsHandler.substInContext(type), HTypeConversion.CAST_TYPE_CHECK);
|
|
|