Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1302)

Unified Diff: pkg/compiler/lib/src/resolution/class_hierarchy.dart

Issue 1383483006: Extract DiagnosticReporter implementation from Compiler. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fixes after rebase. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/patch_parser.dart ('k') | pkg/compiler/lib/src/resolution/class_members.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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});
« no previous file with comments | « pkg/compiler/lib/src/patch_parser.dart ('k') | pkg/compiler/lib/src/resolution/class_members.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698