| Index: pkg/compiler/lib/src/resolution/members.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
|
| index 0f1da5a453f3b9d1bc53c2195905165f4a9dc493..89df08f4e9e32f33e114206b1cd680f4f6fe230a 100644
|
| --- a/pkg/compiler/lib/src/resolution/members.dart
|
| +++ b/pkg/compiler/lib/src/resolution/members.dart
|
| @@ -15,7 +15,8 @@ import '../constants/values.dart';
|
| import '../core_types.dart';
|
| import '../dart_types.dart';
|
| import '../diagnostics/diagnostic_listener.dart' show
|
| - DiagnosticMessage;
|
| + DiagnosticMessage,
|
| + DiagnosticReporter;
|
| import '../diagnostics/invariant.dart' show
|
| invariant;
|
| import '../diagnostics/messages.dart' show
|
| @@ -204,7 +205,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| Element reportLookupErrorIfAny(Element result, Node node, String name) {
|
| if (!Elements.isUnresolved(result)) {
|
| if (!inInstanceContext && result.isInstanceMember) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.NO_INSTANCE_AVAILABLE, {'name': name});
|
| return new ErroneousElementX(MessageKind.NO_INSTANCE_AVAILABLE,
|
| {'name': name},
|
| @@ -216,7 +217,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| name,
|
| ambiguous.messageKind,
|
| ambiguous.messageArguments,
|
| - infos: ambiguous.computeInfos(enclosingElement, compiler),
|
| + infos: ambiguous.computeInfos(enclosingElement, reporter),
|
| isError: true);
|
| }
|
| }
|
| @@ -301,11 +302,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| {List<DiagnosticMessage> infos: const <DiagnosticMessage>[],
|
| bool isError: false}) {
|
| if (isError) {
|
| - compiler.reportError(
|
| - compiler.createMessage(node, kind, arguments), infos);
|
| + reporter.reportError(
|
| + reporter.createMessage(node, kind, arguments), infos);
|
| } else {
|
| - compiler.reportWarning(
|
| - compiler.createMessage(node, kind, arguments), infos);
|
| + reporter.reportWarning(
|
| + reporter.createMessage(node, kind, arguments), infos);
|
| }
|
| // TODO(ahe): Use [allowedCategory] to synthesize a more precise subclass
|
| // of [ErroneousElementX]. For example, [ErroneousFieldElementX],
|
| @@ -354,23 +355,23 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| ResolutionResult visitIdentifier(Identifier node) {
|
| if (node.isThis()) {
|
| if (!inInstanceContext) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.NO_INSTANCE_AVAILABLE, {'name': node});
|
| }
|
| return const NoneResult();
|
| } else if (node.isSuper()) {
|
| if (!inInstanceContext) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.NO_SUPER_IN_STATIC);
|
| }
|
| if ((ElementCategory.SUPER & allowedCategory) == 0) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.INVALID_USE_OF_SUPER);
|
| }
|
| return const NoneResult();
|
| } else {
|
| String name = node.source;
|
| - Element element = lookupInScope(compiler, node, scope, name);
|
| + Element element = lookupInScope(reporter, node, scope, name);
|
| if (Elements.isUnresolved(element) && name == 'dynamic') {
|
| // TODO(johnniwinther): Remove this hack when we can return more complex
|
| // objects than [Element] from this method.
|
| @@ -451,7 +452,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| Element enclosingElement = function.enclosingElement;
|
| if (node.modifiers.isStatic &&
|
| enclosingElement.kind != ElementKind.CLASS) {
|
| - compiler.reportErrorMessage(node, MessageKind.ILLEGAL_STATIC);
|
| + reporter.reportErrorMessage(node, MessageKind.ILLEGAL_STATIC);
|
| }
|
|
|
| scope = new MethodScope(scope, function);
|
| @@ -507,7 +508,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| ResolutionResult visitAssert(Assert node) {
|
| if (!compiler.enableAssertMessage) {
|
| if (node.hasMessage) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.EXPERIMENTAL_ASSERT_MESSAGE);
|
| }
|
| }
|
| @@ -602,7 +603,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| {bool inFunctionDeclaration: false}) {
|
| bool doAddToScope = inFunctionDeclaration;
|
| if (!inFunctionDeclaration && node.name != null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.name,
|
| MessageKind.NAMED_FUNCTION_EXPRESSION,
|
| {'name': node.name});
|
| @@ -767,7 +768,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| seenNamedArguments[source] = namedArgument;
|
| }
|
| } else if (!seenNamedArguments.isEmpty) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| argument, MessageKind.INVALID_ARGUMENT_AFTER_NAMED);
|
| isValidAsConstant = false;
|
| }
|
| @@ -1253,7 +1254,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| knownExpressionType == coreTypes.doubleType;
|
| break;
|
| case UnaryOperatorKind.NOT:
|
| - compiler.internalError(node,
|
| + reporter.internalError(node,
|
| "Unexpected user definable unary operator: $operator");
|
| }
|
| if (isValidConstant) {
|
| @@ -1471,7 +1472,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| case BinaryOperatorKind.LOGICAL_AND:
|
| case BinaryOperatorKind.LOGICAL_OR:
|
| case BinaryOperatorKind.IF_NULL:
|
| - compiler.internalError(
|
| + reporter.internalError(
|
| node, "Unexpected binary operator '${operator}'.");
|
| break;
|
| }
|
| @@ -1522,7 +1523,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| case BinaryOperatorKind.LOGICAL_AND:
|
| case BinaryOperatorKind.LOGICAL_OR:
|
| case BinaryOperatorKind.IF_NULL:
|
| - compiler.internalError(
|
| + reporter.internalError(
|
| node, "Unexpected binary operator '${operator}'.");
|
| break;
|
| }
|
| @@ -1587,7 +1588,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| return const NoneResult();
|
| } else {
|
| // TODO(johnniwinther): Handle get of `this` when it is a [Send] node.
|
| - compiler.internalError(
|
| + reporter.internalError(
|
| node, "Unexpected node '$node'.");
|
| }
|
| return const NoneResult();
|
| @@ -1642,7 +1643,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| // 'super' is not allowed.
|
| break;
|
| default:
|
| - compiler.internalError(
|
| + reporter.internalError(
|
| node, "Unexpected super property access $semantics.");
|
| break;
|
| }
|
| @@ -1670,7 +1671,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| // 'super' is not allowed.
|
| break;
|
| default:
|
| - compiler.internalError(
|
| + reporter.internalError(
|
| node, "Unexpected super property access $semantics.");
|
| break;
|
| }
|
| @@ -2518,7 +2519,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| name.text,
|
| element.messageKind,
|
| element.messageArguments,
|
| - infos: element.computeInfos(enclosingElement, compiler));
|
| + infos: element.computeInfos(enclosingElement, reporter));
|
| registry.registerThrowNoSuchMethod();
|
|
|
| // TODO(johnniwinther): Support ambiguous access as an [AccessSemantics].
|
| @@ -2537,7 +2538,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| name.text,
|
| element.messageKind,
|
| element.messageArguments,
|
| - infos: element.computeInfos(enclosingElement, compiler));
|
| + infos: element.computeInfos(enclosingElement, reporter));
|
| registry.registerThrowNoSuchMethod();
|
|
|
| // TODO(johnniwinther): Support ambiguous access as an [AccessSemantics].
|
| @@ -2587,7 +2588,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| new UniverseSelector(selector, null));
|
| break;
|
| default:
|
| - compiler.internalError(node,
|
| + reporter.internalError(node,
|
| "Unexpected local access $semantics.");
|
| break;
|
| }
|
| @@ -2633,7 +2634,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
| break;
|
| default:
|
| - compiler.internalError(node,
|
| + reporter.internalError(node,
|
| "Unexpected local access $semantics.");
|
| break;
|
| }
|
| @@ -2723,7 +2724,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| if (member == compiler.mirrorSystemGetNameFunction &&
|
| !compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(enclosingElement)) {
|
| - compiler.reportHintMessage(
|
| + reporter.reportHintMessage(
|
| node.selector, MessageKind.STATIC_FUNCTION_BLOAT,
|
| {'class': compiler.mirrorSystemClass.name,
|
| 'name': compiler.mirrorSystemGetNameFunction.name});
|
| @@ -2781,7 +2782,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| MessageKind.CANNOT_RESOLVE_GETTER, const {});
|
| break;
|
| default:
|
| - compiler.internalError(node,
|
| + reporter.internalError(node,
|
| "Unexpected statically resolved access $semantics.");
|
| break;
|
| }
|
| @@ -2816,7 +2817,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| MessageKind.CANNOT_RESOLVE_GETTER, const {});
|
| break;
|
| default:
|
| - compiler.internalError(node,
|
| + reporter.internalError(node,
|
| "Unexpected statically resolved access $semantics.");
|
| break;
|
| }
|
| @@ -2979,7 +2980,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| } else if (element.isStatic || element.isTopLevel) {
|
| return handleStaticOrTopLevelAccess(node, name, element);
|
| }
|
| - return compiler.internalError(node, "Unexpected resolved send: $element");
|
| + return reporter.internalError(node, "Unexpected resolved send: $element");
|
| }
|
|
|
| /// Handle update to resolved [element].
|
| @@ -3017,7 +3018,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| } else if (element.isStatic || element.isTopLevel) {
|
| return handleStaticOrTopLevelUpdate(node, name, element);
|
| }
|
| - return compiler.internalError(node, "Unexpected resolved send: $element");
|
| + return reporter.internalError(node, "Unexpected resolved send: $element");
|
| }
|
|
|
| /// Handle an unqualified [Send], that is where the `node.receiver` is null,
|
| @@ -3035,7 +3036,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
| // `name` or `name()`
|
| Name name = new Name(text, enclosingElement.library);
|
| - Element element = lookupInScope(compiler, node, scope, text);
|
| + Element element = lookupInScope(reporter, node, scope, text);
|
| if (element == null) {
|
| if (text == 'dynamic') {
|
| // `dynamic` or `dynamic()` where 'dynamic' is not declared in the
|
| @@ -3060,7 +3061,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| Identifier selector = node.selector.asIdentifier();
|
| String text = selector.source;
|
| Name name = new Name(text, enclosingElement.library);
|
| - Element element = lookupInScope(compiler, node, scope, text);
|
| + Element element = lookupInScope(reporter, node, scope, text);
|
| if (element == null) {
|
| if (text == 'dynamic') {
|
| // `dynamic = b`, `dynamic++`, or `dynamic += b` where 'dynamic' is not
|
| @@ -3114,7 +3115,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| /// Callback for native enqueuer to parse a type. Returns [:null:] on error.
|
| DartType resolveTypeFromString(Node node, String typeName) {
|
| - Element element = lookupInScope(compiler, node, scope, typeName);
|
| + Element element = lookupInScope(reporter, node, scope, typeName);
|
| if (element == null) return null;
|
| if (element is! ClassElement) return null;
|
| ClassElement cls = element;
|
| @@ -3336,7 +3337,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| registry.registerStaticInvocation(semantics.setter);
|
| switch (semantics.kind) {
|
| case AccessKind.SUPER_FINAL_FIELD:
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| node,
|
| MessageKind.ASSIGNING_FINAL_FIELD_IN_SUPER,
|
| {'name': name,
|
| @@ -3347,7 +3348,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| registry.registerSuperNoSuchMethod();
|
| break;
|
| case AccessKind.SUPER_METHOD:
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| node, MessageKind.ASSIGNING_METHOD_IN_SUPER,
|
| {'name': name,
|
| 'superclassName': semantics.setter.enclosingClass.name});
|
| @@ -3549,7 +3550,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| String name = node.slowNameString;
|
| registry.registerConstSymbol(name);
|
| if (!validateSymbol(node, name, reportError: false)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node,
|
| MessageKind.UNSUPPORTED_LITERAL_SYMBOL,
|
| {'value': name});
|
| @@ -3582,7 +3583,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| ResolutionResult visitRethrow(Rethrow node) {
|
| if (!inCatchBlock) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.THROW_WITHOUT_EXPRESSION);
|
| }
|
| return const NoneResult();
|
| @@ -3595,11 +3596,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| // It is a compile-time error if a return statement of the form
|
| // `return e;` appears in a generative constructor. (Dart Language
|
| // Specification 13.12.)
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| expression,
|
| MessageKind.CANNOT_RETURN_FROM_CONSTRUCTOR);
|
| } else if (!node.isArrowBody && currentAsyncMarker.isYielding) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node,
|
| MessageKind.RETURN_IN_GENERATOR,
|
| {'modifier': currentAsyncMarker});
|
| @@ -3619,9 +3620,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| ResolutionResult visitRedirectingFactoryBody(RedirectingFactoryBody node) {
|
| final isSymbolConstructor = enclosingElement == compiler.symbolConstructor;
|
| if (!enclosingElement.isFactoryConstructor) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.FACTORY_REDIRECTION_IN_NON_FACTORY);
|
| - compiler.reportHintMessage(
|
| + reporter.reportHintMessage(
|
| enclosingElement, MessageKind.MISSING_FACTORY_KEYWORD);
|
| }
|
| ConstructorElementX constructor = enclosingElement;
|
| @@ -3645,12 +3646,12 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| } else {
|
| if (isConstConstructor &&
|
| !redirectionTarget.isConst) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.CONSTRUCTOR_IS_NOT_CONST);
|
| isValidAsConstant = false;
|
| }
|
| if (redirectionTarget == constructor) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.CYCLIC_REDIRECTING_FACTORY);
|
| // TODO(johnniwinther): Create constant constructor for this case and
|
| // let evaluation detect the cyclicity.
|
| @@ -3667,7 +3668,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| FunctionType constructorType = constructor.computeType(resolution);
|
| bool isSubtype = compiler.types.isSubtype(targetType, constructorType);
|
| if (!isSubtype) {
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| node,
|
| MessageKind.NOT_ASSIGNABLE,
|
| {'fromType': targetType, 'toType': constructorType});
|
| @@ -3760,7 +3761,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
| }
|
| assert(modifierNode != null);
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| modifierNode, MessageKind.EXTRANEOUS_MODIFIER,
|
| {'modifier': modifier});
|
| }
|
| @@ -3837,7 +3838,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| registry.registerStaticUse(constructor.declaration);
|
| ClassElement cls = constructor.enclosingClass;
|
| if (cls.isEnumClass && currentClass != cls) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node,
|
| MessageKind.CANNOT_INSTANTIATE_ENUM,
|
| {'enumName': cls.name});
|
| @@ -3846,7 +3847,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| InterfaceType type = registry.getType(node);
|
| if (node.isConst && type.containsTypeVariables) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.send.selector,
|
| MessageKind.TYPE_VARIABLE_IN_CONSTANT);
|
| isValidAsConstant = false;
|
| @@ -3867,7 +3868,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| ConstantValue name = compiler.constants.getConstantValue(constant);
|
| if (!name.isString) {
|
| DartType type = name.getType(coreTypes);
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| argumentNode,
|
| MessageKind.STRING_EXPECTED,
|
| {'type': type});
|
| @@ -3881,7 +3882,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| } else {
|
| if (!compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(
|
| enclosingElement)) {
|
| - compiler.reportHintMessage(
|
| + reporter.reportHintMessage(
|
| node.newToken, MessageKind.NON_CONST_BLOAT,
|
| {'name': compiler.symbolClass.name});
|
| }
|
| @@ -3935,7 +3936,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (cls == compiler.stringClass) continue;
|
| Element equals = cls.lookupMember('==');
|
| if (equals.enclosingClass != compiler.objectClass) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| spannable,
|
| MessageKind.CONST_MAP_KEY_OVERRIDES_EQUALS,
|
| {'type': keyType});
|
| @@ -3969,14 +3970,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (name.isEmpty) return true;
|
| if (name.startsWith('_')) {
|
| if (reportError) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.PRIVATE_IDENTIFIER, {'value': name});
|
| }
|
| return false;
|
| }
|
| if (!symbolValidationPattern.hasMatch(name)) {
|
| if (reportError) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.INVALID_SYMBOL, {'value': name});
|
| }
|
| return false;
|
| @@ -4023,13 +4024,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| Link<Node> nodes = arguments.nodes;
|
| if (nodes.isEmpty) {
|
| // The syntax [: <>[] :] is not allowed.
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| arguments, MessageKind.MISSING_TYPE_ARGUMENT);
|
| isValidAsConstant = false;
|
| } else {
|
| typeArgument = resolveTypeAnnotation(nodes.head);
|
| for (nodes = nodes.tail; !nodes.isEmpty; nodes = nodes.tail) {
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| nodes.head, MessageKind.ADDITIONAL_TYPE_ARGUMENT);
|
| resolveTypeAnnotation(nodes.head);
|
| }
|
| @@ -4038,7 +4039,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| DartType listType;
|
| if (typeArgument != null) {
|
| if (node.isConst && typeArgument.containsTypeVariables) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| arguments.nodes.head,
|
| MessageKind.TYPE_VARIABLE_IN_CONSTANT);
|
| isValidAsConstant = false;
|
| @@ -4133,7 +4134,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (node.target == null) {
|
| target = statementScope.currentBreakTarget();
|
| if (target == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.NO_BREAK_TARGET);
|
| return const NoneResult();
|
| }
|
| @@ -4142,13 +4143,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| String labelName = node.target.source;
|
| LabelDefinition label = statementScope.lookupLabel(labelName);
|
| if (label == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.target, MessageKind.UNBOUND_LABEL, {'labelName': labelName});
|
| return const NoneResult();
|
| }
|
| target = label.target;
|
| if (!target.statement.isValidBreakTarget()) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.target, MessageKind.INVALID_BREAK);
|
| return const NoneResult();
|
| }
|
| @@ -4164,7 +4165,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (node.target == null) {
|
| target = statementScope.currentContinueTarget();
|
| if (target == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.NO_CONTINUE_TARGET);
|
| return const NoneResult();
|
| }
|
| @@ -4173,13 +4174,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| String labelName = node.target.source;
|
| LabelDefinition label = statementScope.lookupLabel(labelName);
|
| if (label == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.target, MessageKind.UNBOUND_LABEL, {'labelName': labelName});
|
| return const NoneResult();
|
| }
|
| target = label.target;
|
| if (!target.statement.isValidContinueTarget()) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.target, MessageKind.INVALID_CONTINUE);
|
| }
|
| label.setContinueTarget();
|
| @@ -4250,26 +4251,26 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| loopVariable = registry.getDefinition(send);
|
| Identifier identifier = send.selector.asIdentifier();
|
| if (identifier == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| send.selector, MessageKind.INVALID_FOR_IN);
|
| } else {
|
| loopVariableSelector = new Selector.setter(
|
| new Name(identifier.source, library));
|
| }
|
| if (send.receiver != null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| send.receiver, MessageKind.INVALID_FOR_IN);
|
| }
|
| } else if (variableDefinitions != null) {
|
| Link<Node> nodes = variableDefinitions.definitions.nodes;
|
| if (!nodes.tail.isEmpty) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| nodes.tail.head, MessageKind.INVALID_FOR_IN);
|
| }
|
| Node first = nodes.head;
|
| Identifier identifier = first.asIdentifier();
|
| if (identifier == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| first, MessageKind.INVALID_FOR_IN);
|
| } else {
|
| loopVariableSelector = new Selector.setter(
|
| @@ -4277,7 +4278,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| loopVariable = registry.getDefinition(identifier);
|
| }
|
| } else {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| declaration, MessageKind.INVALID_FOR_IN);
|
| }
|
| if (loopVariableSelector != null) {
|
| @@ -4314,7 +4315,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (element.isTarget) {
|
| registry.defineLabel(element.label, element);
|
| } else {
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| element.label,
|
| MessageKind.UNUSED_LABEL,
|
| {'labelName': labelName});
|
| @@ -4337,19 +4338,19 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| Link<Node> nodes = arguments.nodes;
|
| if (nodes.isEmpty) {
|
| // The syntax [: <>{} :] is not allowed.
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| arguments, MessageKind.MISSING_TYPE_ARGUMENT);
|
| isValidAsConstant = false;
|
| } else {
|
| keyTypeArgument = resolveTypeAnnotation(nodes.head);
|
| nodes = nodes.tail;
|
| if (nodes.isEmpty) {
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| arguments, MessageKind.MISSING_TYPE_ARGUMENT);
|
| } else {
|
| valueTypeArgument = resolveTypeAnnotation(nodes.head);
|
| for (nodes = nodes.tail; !nodes.isEmpty; nodes = nodes.tail) {
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| nodes.head, MessageKind.ADDITIONAL_TYPE_ARGUMENT);
|
| resolveTypeAnnotation(nodes.head);
|
| }
|
| @@ -4363,7 +4364,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| mapType = coreTypes.mapType();
|
| }
|
| if (node.isConst && mapType.containsTypeVariables) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| arguments,
|
| MessageKind.TYPE_VARIABLE_IN_CONSTANT);
|
| isValidAsConstant = false;
|
| @@ -4461,16 +4462,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| // We only report the bad type on the first class element. All others
|
| // get a "type differs" error.
|
| if (caseType.element == compiler.doubleClass) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node,
|
| MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
|
| {'type': "double"});
|
| } else if (caseType.element == compiler.functionClass) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.SWITCH_CASE_FORBIDDEN,
|
| {'type': "Function"});
|
| } else if (value.isObject && overridesEquals(caseType)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| firstCase.expression,
|
| MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
|
| {'type': caseType});
|
| @@ -4478,16 +4479,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| } else {
|
| if (caseType != firstCaseType) {
|
| if (error == null) {
|
| - error = compiler.createMessage(
|
| + error = reporter.createMessage(
|
| node,
|
| MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL,
|
| {'type': firstCaseType});
|
| - infos.add(compiler.createMessage(
|
| + infos.add(reporter.createMessage(
|
| firstCase.expression,
|
| MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
|
| {'type': firstCaseType}));
|
| }
|
| - infos.add(compiler.createMessage(
|
| + infos.add(reporter.createMessage(
|
| caseMatch.expression,
|
| MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
|
| {'type': caseType}));
|
| @@ -4496,7 +4497,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
| }
|
| if (error != null) {
|
| - compiler.reportError(error, infos);
|
| + reporter.reportError(error, infos);
|
| }
|
| }
|
|
|
| @@ -4520,13 +4521,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| LabelDefinition existingElement = continueLabels[labelName];
|
| if (existingElement != null) {
|
| // It's an error if the same label occurs twice in the same switch.
|
| - compiler.reportError(
|
| - compiler.createMessage(
|
| + reporter.reportError(
|
| + reporter.createMessage(
|
| label,
|
| MessageKind.DUPLICATE_LABEL,
|
| {'labelName': labelName}),
|
| <DiagnosticMessage>[
|
| - compiler.createMessage(
|
| + reporter.createMessage(
|
| existingElement.label,
|
| MessageKind.EXISTING_LABEL,
|
| {'labelName': labelName}),
|
| @@ -4535,13 +4536,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| // It's only a warning if it shadows another label.
|
| existingElement = statementScope.lookupLabel(labelName);
|
| if (existingElement != null) {
|
| - compiler.reportWarning(
|
| - compiler.createMessage(
|
| + reporter.reportWarning(
|
| + reporter.createMessage(
|
| label,
|
| MessageKind.DUPLICATE_LABEL,
|
| {'labelName': labelName}),
|
| <DiagnosticMessage>[
|
| - compiler.createMessage(
|
| + reporter.createMessage(
|
| existingElement.label,
|
| MessageKind.EXISTING_LABEL,
|
| {'labelName': labelName}),
|
| @@ -4557,7 +4558,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| cases = cases.tail;
|
| // Test that only the last case, if any, is a default case.
|
| if (switchCase.defaultKeyword != null && !cases.isEmpty) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| switchCase, MessageKind.INVALID_CASE_DEFAULT);
|
| }
|
| }
|
| @@ -4603,7 +4604,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
|
|
| visit(node.tryBlock);
|
| if (node.catchBlocks.isEmpty && node.finallyBlock == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.getEndToken().next, MessageKind.NO_CATCH_NOR_FINALLY);
|
| }
|
| visit(node.catchBlocks);
|
| @@ -4620,7 +4621,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (node.formals != null) {
|
| Link<Node> formalsToProcess = node.formals.nodes;
|
| if (formalsToProcess.isEmpty) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node, MessageKind.EMPTY_CATCH_DECLARATION);
|
| } else {
|
| exceptionDefinition = formalsToProcess.head.asVariableDefinitions();
|
| @@ -4630,7 +4631,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| formalsToProcess = formalsToProcess.tail;
|
| if (!formalsToProcess.isEmpty) {
|
| for (Node extra in formalsToProcess) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| extra, MessageKind.EXTRA_CATCH_DECLARATION);
|
| }
|
| }
|
| @@ -4647,17 +4648,17 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| // sequence of optional parameters.
|
| NodeList nodeList = link.head.asNodeList();
|
| if (nodeList != null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| nodeList, MessageKind.OPTIONAL_PARAMETER_IN_CATCH);
|
| } else {
|
| VariableDefinitions declaration = link.head;
|
| for (Node modifier in declaration.modifiers.nodes) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| modifier, MessageKind.PARAMETER_WITH_MODIFIER_IN_CATCH);
|
| }
|
| TypeAnnotation type = declaration.type;
|
| if (type != null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| type, MessageKind.PARAMETER_WITH_TYPE_IN_CATCH);
|
| }
|
| }
|
| @@ -4691,7 +4692,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
|
|
| /// Looks up [name] in [scope] and unwraps the result.
|
| -Element lookupInScope(Compiler compiler, Node node,
|
| +Element lookupInScope(DiagnosticReporter reporter, Node node,
|
| Scope scope, String name) {
|
| - return Elements.unwrap(scope.lookup(name), compiler, node);
|
| + return Elements.unwrap(scope.lookup(name), reporter, node);
|
| }
|
|
|