| Index: pkg/compiler/lib/src/resolution/type_resolver.dart
 | 
| diff --git a/pkg/compiler/lib/src/resolution/type_resolver.dart b/pkg/compiler/lib/src/resolution/type_resolver.dart
 | 
| index 480e51a844276982717aac661f0e2455e609f2ec..0101625b1e18cf07740413243d218c921901e013 100644
 | 
| --- a/pkg/compiler/lib/src/resolution/type_resolver.dart
 | 
| +++ b/pkg/compiler/lib/src/resolution/type_resolver.dart
 | 
| @@ -12,7 +12,7 @@ import '../dart_backend/dart_backend.dart' show
 | 
|      DartBackend;
 | 
|  import '../dart_types.dart';
 | 
|  import '../diagnostics/diagnostic_listener.dart' show
 | 
| -    DiagnosticListener,
 | 
| +    DiagnosticReporter,
 | 
|      DiagnosticMessage;
 | 
|  import '../diagnostics/messages.dart' show
 | 
|      MessageKind;
 | 
| @@ -45,7 +45,8 @@ class TypeResolver {
 | 
|  
 | 
|    TypeResolver(this.compiler);
 | 
|  
 | 
| -  DiagnosticListener get listener => compiler;
 | 
| +  DiagnosticReporter get reporter => compiler.reporter;
 | 
| +
 | 
|    Resolution get resolution => compiler.resolution;
 | 
|  
 | 
|    /// Tries to resolve the type name as an element.
 | 
| @@ -56,7 +57,7 @@ class TypeResolver {
 | 
|      Element element;
 | 
|      if (prefixName != null) {
 | 
|        Element prefixElement =
 | 
| -          lookupInScope(compiler, prefixName, scope, prefixName.source);
 | 
| +          lookupInScope(reporter, prefixName, scope, prefixName.source);
 | 
|        if (prefixElement != null && prefixElement.isPrefix) {
 | 
|          // The receiver is a prefix. Lookup in the imported members.
 | 
|          PrefixElement prefix = prefixElement;
 | 
| @@ -78,7 +79,7 @@ class TypeResolver {
 | 
|          element = null;
 | 
|        }
 | 
|      } else {
 | 
| -      element = lookupInScope(compiler, typeName, scope, typeName.source);
 | 
| +      element = lookupInScope(reporter, typeName, scope, typeName.source);
 | 
|      }
 | 
|      return element;
 | 
|    }
 | 
| @@ -135,13 +136,13 @@ class TypeResolver {
 | 
|           Element erroneousElement,
 | 
|           List<DiagnosticMessage> infos: const <DiagnosticMessage>[]}) {
 | 
|        if (malformedIsError) {
 | 
| -        listener.reportError(
 | 
| -            listener.createMessage(node, messageKind, messageArguments),
 | 
| +        reporter.reportError(
 | 
| +            reporter.createMessage(node, messageKind, messageArguments),
 | 
|              infos);
 | 
|        } else {
 | 
|          registry.registerThrowRuntimeError();
 | 
| -        listener.reportWarning(
 | 
| -            listener.createMessage(node, messageKind, messageArguments),
 | 
| +        reporter.reportWarning(
 | 
| +            reporter.createMessage(node, messageKind, messageArguments),
 | 
|              infos);
 | 
|        }
 | 
|        if (erroneousElement == null) {
 | 
| @@ -166,7 +167,7 @@ class TypeResolver {
 | 
|            ambiguous.messageKind,
 | 
|            ambiguous.messageArguments,
 | 
|            infos: ambiguous.computeInfos(
 | 
| -              registry.mapping.analyzedElement, compiler));
 | 
| +              registry.mapping.analyzedElement, reporter));
 | 
|        ;
 | 
|      } else if (element.isErroneous) {
 | 
|        if (element is ErroneousElement) {
 | 
| @@ -239,7 +240,7 @@ class TypeResolver {
 | 
|          }
 | 
|          type = checkNoTypeArguments(type);
 | 
|        } else {
 | 
| -        compiler.internalError(node,
 | 
| +        reporter.internalError(node,
 | 
|              "Unexpected element kind ${element.kind}.");
 | 
|        }
 | 
|        if (addTypeVariableBoundsCheck) {
 | 
| @@ -259,7 +260,7 @@ class TypeResolver {
 | 
|                                     TypeVariableType typeVariable,
 | 
|                                     DartType bound) {
 | 
|        if (!compiler.types.isSubtype(typeArgument, bound)) {
 | 
| -        compiler.reportWarningMessage(
 | 
| +        reporter.reportWarningMessage(
 | 
|              node,
 | 
|              MessageKind.INVALID_TYPE_VARIABLE_BOUND,
 | 
|              {'typeVariable': typeVariable,
 | 
| @@ -292,7 +293,7 @@ class TypeResolver {
 | 
|           !typeArguments.isEmpty;
 | 
|           typeArguments = typeArguments.tail, index++) {
 | 
|        if (index > expectedVariables - 1) {
 | 
| -        compiler.reportWarningMessage(
 | 
| +        reporter.reportWarningMessage(
 | 
|              typeArguments.head, MessageKind.ADDITIONAL_TYPE_ARGUMENT);
 | 
|          typeArgumentCountMismatch = true;
 | 
|        }
 | 
| @@ -301,7 +302,7 @@ class TypeResolver {
 | 
|        arguments.add(argType);
 | 
|      }
 | 
|      if (index < expectedVariables) {
 | 
| -      compiler.reportWarningMessage(
 | 
| +      reporter.reportWarningMessage(
 | 
|            node.typeArguments, MessageKind.MISSING_TYPE_ARGUMENT);
 | 
|        typeArgumentCountMismatch = true;
 | 
|      }
 | 
| 
 |