| Index: pkg/compiler/lib/src/resolution/class_hierarchy.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/class_hierarchy.dart b/pkg/compiler/lib/src/resolution/class_hierarchy.dart
|
| index e27b95f461f254f256934effed3f5d56312fc81f..9f1ce4b69c992011dc3d11425d732960d23f94aa 100644
|
| --- a/pkg/compiler/lib/src/resolution/class_hierarchy.dart
|
| +++ b/pkg/compiler/lib/src/resolution/class_hierarchy.dart
|
| @@ -68,7 +68,7 @@ class TypeDefinitionVisitor extends MappingVisitor<DartType> {
|
| TypeVariable typeNode = nodeLink.head;
|
| registry.useType(typeNode, typeVariable);
|
| if (nameSet.contains(typeName)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| typeNode,
|
| MessageKind.DUPLICATE_TYPE_VARIABLE_NAME,
|
| {'typeVariableName': typeName});
|
| @@ -92,7 +92,7 @@ class TypeDefinitionVisitor extends MappingVisitor<DartType> {
|
| if (identical(element, variableElement)) {
|
| // Only report an error on the checked type variable to avoid
|
| // generating multiple errors for the same cyclicity.
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| typeNode.name,
|
| MessageKind.CYCLIC_TYPE_VARIABLE,
|
| {'typeVariableName': variableElement.name});
|
| @@ -135,10 +135,10 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
|
|
| DartType visitClassNode(ClassNode node) {
|
| if (element == null) {
|
| - throw compiler.internalError(node, 'element is null');
|
| + throw reporter.internalError(node, 'element is null');
|
| }
|
| if (element.resolutionState != STATE_STARTED) {
|
| - throw compiler.internalError(element,
|
| + throw reporter.internalError(element,
|
| 'cyclic resolution of class $element');
|
| }
|
|
|
| @@ -175,7 +175,7 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| // Avoid making the superclass (usually Object) extend itself.
|
| if (element != superElement) {
|
| if (superElement == null) {
|
| - compiler.internalError(node,
|
| + reporter.internalError(node,
|
| "Cannot resolve default superclass for $element.");
|
| } else {
|
| superElement.ensureResolved(resolution);
|
| @@ -198,7 +198,7 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| Map arguments = {'constructorName': ''};
|
| // TODO(ahe): Why is this a compile-time error? Or if it is an error,
|
| // why do we bother to registerThrowNoSuchMethod below?
|
| - compiler.reportErrorMessage(node, kind, arguments);
|
| + reporter.reportErrorMessage(node, kind, arguments);
|
| superMember = new ErroneousElementX(
|
| kind, arguments, '', element);
|
| registry.registerThrowNoSuchMethod();
|
| @@ -208,7 +208,7 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| if (!CallStructure.NO_ARGS.signatureApplies(
|
| superConstructor.functionSignature)) {
|
| MessageKind kind = MessageKind.NO_MATCHING_CONSTRUCTOR_FOR_IMPLICIT;
|
| - compiler.reportErrorMessage(node, kind);
|
| + reporter.reportErrorMessage(node, kind);
|
| superMember = new ErroneousElementX(kind, {}, '', element);
|
| }
|
| }
|
| @@ -217,7 +217,7 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| if (superMember.isErroneous) {
|
| compiler.elementsWithCompileTimeErrors.add(constructor);
|
| }
|
| - element.setDefaultConstructor(constructor, compiler);
|
| + element.setDefaultConstructor(constructor, reporter);
|
| }
|
| return element.computeType(resolution);
|
| }
|
| @@ -225,10 +225,10 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| @override
|
| DartType visitEnum(Enum node) {
|
| if (element == null) {
|
| - throw compiler.internalError(node, 'element is null');
|
| + throw reporter.internalError(node, 'element is null');
|
| }
|
| if (element.resolutionState != STATE_STARTED) {
|
| - throw compiler.internalError(element,
|
| + throw reporter.internalError(element,
|
| 'cyclic resolution of class $element');
|
| }
|
|
|
| @@ -238,13 +238,14 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| calculateAllSupertypes(element);
|
|
|
| if (node.names.nodes.isEmpty) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node,
|
| MessageKind.EMPTY_ENUM_DECLARATION,
|
| {'enumName': element.name});
|
| }
|
|
|
| - EnumCreator creator = new EnumCreator(compiler, element);
|
| + EnumCreator creator =
|
| + new EnumCreator(reporter, compiler.coreTypes, element);
|
| creator.createMembers();
|
| return enumType;
|
| }
|
| @@ -254,21 +255,21 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| DartType checkMixinType(TypeAnnotation mixinNode) {
|
| DartType mixinType = resolveType(mixinNode);
|
| if (isBlackListed(mixinType)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| mixinNode,
|
| MessageKind.CANNOT_MIXIN,
|
| {'type': mixinType});
|
| } else if (mixinType.isTypeVariable) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| mixinNode,
|
| MessageKind.CLASS_NAME_EXPECTED);
|
| } else if (mixinType.isMalformed) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| mixinNode,
|
| MessageKind.CANNOT_MIXIN_MALFORMED,
|
| {'className': element.name, 'malformedType': mixinType});
|
| } else if (mixinType.isEnumType) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| mixinNode,
|
| MessageKind.CANNOT_MIXIN_ENUM,
|
| {'className': element.name, 'enumType': mixinType});
|
| @@ -278,17 +279,17 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
|
|
| DartType visitNamedMixinApplication(NamedMixinApplication node) {
|
| if (element == null) {
|
| - throw compiler.internalError(node, 'element is null');
|
| + throw reporter.internalError(node, 'element is null');
|
| }
|
| if (element.resolutionState != STATE_STARTED) {
|
| - throw compiler.internalError(element,
|
| + throw reporter.internalError(element,
|
| 'cyclic resolution of class $element');
|
| }
|
|
|
| if (identical(node.classKeyword.stringValue, 'typedef')) {
|
| // TODO(aprelev@gmail.com): Remove this deprecation diagnostic
|
| // together with corresponding TODO in parser.dart.
|
| - compiler.reportWarningMessage(
|
| + reporter.reportWarningMessage(
|
| node.classKeyword,
|
| MessageKind.DEPRECATED_TYPEDEF_MIXIN_SYNTAX);
|
| }
|
| @@ -443,7 +444,7 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| while (current != null && current.isMixinApplication) {
|
| MixinApplicationElement currentMixinApplication = current;
|
| if (currentMixinApplication == mixinApplication) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| mixinApplication,
|
| MessageKind.ILLEGAL_MIXIN_CYCLE,
|
| {'mixinName1': current.name, 'mixinName2': previous.name});
|
| @@ -467,24 +468,24 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| DartType supertype = resolveType(superclass);
|
| if (supertype != null) {
|
| if (supertype.isMalformed) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass,
|
| MessageKind.CANNOT_EXTEND_MALFORMED,
|
| {'className': element.name, 'malformedType': supertype});
|
| return objectType;
|
| } else if (supertype.isEnumType) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass,
|
| MessageKind.CANNOT_EXTEND_ENUM,
|
| {'className': element.name, 'enumType': supertype});
|
| return objectType;
|
| } else if (!supertype.isInterfaceType) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass.typeName,
|
| MessageKind.CLASS_NAME_EXPECTED);
|
| return objectType;
|
| } else if (isBlackListed(supertype)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass,
|
| MessageKind.CANNOT_EXTEND,
|
| {'type': supertype});
|
| @@ -501,40 +502,40 @@ class ClassResolverVisitor extends TypeDefinitionVisitor {
|
| DartType interfaceType = resolveType(link.head);
|
| if (interfaceType != null) {
|
| if (interfaceType.isMalformed) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass,
|
| MessageKind.CANNOT_IMPLEMENT_MALFORMED,
|
| {'className': element.name, 'malformedType': interfaceType});
|
| } else if (interfaceType.isEnumType) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass,
|
| MessageKind.CANNOT_IMPLEMENT_ENUM,
|
| {'className': element.name, 'enumType': interfaceType});
|
| } else if (!interfaceType.isInterfaceType) {
|
| // TODO(johnniwinther): Handle dynamic.
|
| TypeAnnotation typeAnnotation = link.head;
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| typeAnnotation.typeName, MessageKind.CLASS_NAME_EXPECTED);
|
| } else {
|
| if (interfaceType == element.supertype) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| superclass,
|
| MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS,
|
| {'type': interfaceType});
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| link.head,
|
| MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS,
|
| {'type': interfaceType});
|
| }
|
| if (result.contains(interfaceType)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| link.head,
|
| MessageKind.DUPLICATE_IMPLEMENTS,
|
| {'type': interfaceType});
|
| }
|
| result = result.prepend(interfaceType);
|
| if (isBlackListed(interfaceType)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| link.head,
|
| MessageKind.CANNOT_IMPLEMENT,
|
| {'type': interfaceType});
|
| @@ -678,7 +679,7 @@ class ClassSupertypeResolver extends CommonResolverVisitor {
|
| }
|
|
|
| void visitIdentifier(Identifier node) {
|
| - Element element = lookupInScope(compiler, node, context, node.source);
|
| + Element element = lookupInScope(reporter, node, context, node.source);
|
| if (element != null && element.isClass) {
|
| loadSupertype(element, node);
|
| }
|
| @@ -687,13 +688,13 @@ class ClassSupertypeResolver extends CommonResolverVisitor {
|
| void visitSend(Send node) {
|
| Identifier prefix = node.receiver.asIdentifier();
|
| if (prefix == null) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.receiver, MessageKind.NOT_A_PREFIX, {'node': node.receiver});
|
| return;
|
| }
|
| - Element element = lookupInScope(compiler, prefix, context, prefix.source);
|
| + Element element = lookupInScope(reporter, prefix, context, prefix.source);
|
| if (element == null || !identical(element.kind, ElementKind.PREFIX)) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.receiver, MessageKind.NOT_A_PREFIX, {'node': node.receiver});
|
| return;
|
| }
|
| @@ -701,7 +702,7 @@ class ClassSupertypeResolver extends CommonResolverVisitor {
|
| Identifier selector = node.selector.asIdentifier();
|
| var e = prefixElement.lookupLocalMember(selector.source);
|
| if (e == null || !e.impliesType) {
|
| - compiler.reportErrorMessage(
|
| + reporter.reportErrorMessage(
|
| node.selector,
|
| MessageKind.CANNOT_RESOLVE_TYPE,
|
| {'typeName': node.selector});
|
|
|