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

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

Issue 1363993004: Report info messages together with their error, warning, or hint. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 5 years, 3 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
Index: pkg/compiler/lib/src/resolution/class_members.dart
diff --git a/pkg/compiler/lib/src/resolution/class_members.dart b/pkg/compiler/lib/src/resolution/class_members.dart
index e0492063162cf7a6f2ef4458ff8acfa9e45398f8..2bcf2dd55e259fd526312c78a02e60d4b98fc2d8 100644
--- a/pkg/compiler/lib/src/resolution/class_members.dart
+++ b/pkg/compiler/lib/src/resolution/class_members.dart
@@ -9,6 +9,8 @@ import '../common/names.dart' show
import '../compiler.dart' show
Compiler;
import '../dart_types.dart';
+import '../diagnostics/diagnostic_listener.dart' show
+ DiagnosticMessage;
import '../diagnostics/invariant.dart' show
invariant;
import '../diagnostics/messages.dart' show
@@ -254,7 +256,7 @@ abstract class MembersCreator {
}
reportMessage(
interfaceMember.element, MessageKind.ABSTRACT_METHOD, () {
- compiler.reportWarning(
+ compiler.reportWarningMessage(
interfaceMember.element, kind,
{'class': cls.name, 'name': name.text});
});
@@ -266,20 +268,24 @@ abstract class MembersCreator {
Member inherited = interfaceMember.declarations.first;
reportMessage(
interfaceMember, MessageKind.UNIMPLEMENTED_METHOD, () {
- compiler.reportWarning(cls,
+ DiagnosticMessage warning = compiler.createMessage(
+ cls,
interfaceMember.declarations.length == 1
? singleKind : multipleKind,
{'class': cls.name,
'name': name.text,
'method': interfaceMember,
'declarer': inherited.declarer});
+ List<DiagnosticMessage> infos = <DiagnosticMessage>[];
for (Member inherited in interfaceMember.declarations) {
- compiler.reportInfo(inherited.element,
+ infos.add(compiler.createMessage(
+ inherited.element,
inherited.isDeclaredByField ?
implicitlyDeclaredKind : explicitlyDeclaredKind,
{'class': inherited.declarer.name,
- 'name': name.text});
+ 'name': name.text}));
}
+ compiler.reportWarning(warning, infos);
});
}
if (interfaceMember.isSetter) {
@@ -314,7 +320,9 @@ abstract class MembersCreator {
if (compiler.backend.isBackendLibrary(cls.library)) return;
reportMessage(compiler.functionClass, MessageKind.UNIMPLEMENTED_METHOD, () {
- compiler.reportWarning(cls, MessageKind.UNIMPLEMENTED_METHOD_ONE,
+ compiler.reportWarningMessage(
+ cls,
+ MessageKind.UNIMPLEMENTED_METHOD_ONE,
{'class': cls.name,
'name': Identifiers.call,
'method': Identifiers.call,
@@ -338,12 +346,17 @@ abstract class MembersCreator {
reportMessage(superMember, MessageKind.INSTANCE_STATIC_SAME_NAME,
() {
compiler.reportWarning(
- declared.element,
- MessageKind.INSTANCE_STATIC_SAME_NAME,
- {'memberName': declared.name,
- 'className': superclass.name});
- compiler.reportInfo(superMember.element,
- MessageKind.INSTANCE_STATIC_SAME_NAME_CONT);
+ compiler.createMessage(
+ declared.element,
+ MessageKind.INSTANCE_STATIC_SAME_NAME,
+ {'memberName': declared.name,
+ 'className': superclass.name}),
+ <DiagnosticMessage>[
+ compiler.createMessage(
+ superMember.element,
+ MessageKind.INSTANCE_STATIC_SAME_NAME_CONT),
+ ]);
+
});
break;
}
@@ -386,22 +399,29 @@ abstract class MembersCreator {
void reportError(MessageKind errorKind, MessageKind infoKind) {
reportMessage(
inherited.element, MessageKind.INVALID_OVERRIDE_METHOD, () {
- compiler.reportError(declared.element, errorKind,
- {'name': declared.name.text,
- 'class': cls.thisType,
- 'inheritedClass': inherited.declarer});
- compiler.reportInfo(inherited.element, infoKind,
- {'name': declared.name.text,
- 'class': inherited.declarer});
+ compiler.reportError(
+ compiler.createMessage(
+ declared.element,
+ errorKind,
+ {'name': declared.name.text,
+ 'class': cls.thisType,
+ 'inheritedClass': inherited.declarer}),
+ <DiagnosticMessage>[
+ compiler.createMessage(
+ inherited.element,
+ infoKind,
+ {'name': declared.name.text,
+ 'class': inherited.declarer}),
+ ]);
});
}
if (declared.isDeclaredByField && inherited.isMethod) {
reportError(MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD,
- MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT);
+ MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT);
} else if (declared.isMethod && inherited.isDeclaredByField) {
reportError(MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD,
- MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT);
+ MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT);
} else if (declared.isGetter && inherited.isMethod) {
reportError(MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER,
MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT);
@@ -415,15 +435,22 @@ abstract class MembersCreator {
MessageKind warningKind,
MessageKind infoKind) {
reportMessage(marker, MessageKind.INVALID_OVERRIDE_METHOD, () {
- compiler.reportWarning(declared.element, warningKind,
- {'declaredType': declared.type,
- 'name': declared.name.text,
- 'class': cls.thisType,
- 'inheritedType': inherited.type,
- 'inheritedClass': inherited.declarer});
- compiler.reportInfo(inherited.element, infoKind,
- {'name': declared.name.text,
- 'class': inherited.declarer});
+ compiler.reportWarning(
+ compiler.createMessage(
+ declared.element,
+ warningKind,
+ {'declaredType': declared.type,
+ 'name': declared.name.text,
+ 'class': cls.thisType,
+ 'inheritedType': inherited.type,
+ 'inheritedClass': inherited.declarer}),
+ <DiagnosticMessage>[
+ compiler.createMessage(
+ inherited.element,
+ infoKind,
+ {'name': declared.name.text,
+ 'class': inherited.declarer}),
+ ]);
});
}
if (declared.isDeclaredByField) {
@@ -476,11 +503,14 @@ abstract class MembersCreator {
Element contextElement,
MessageKind contextMessage) {
compiler.reportError(
- errorneousElement,
- errorMessage,
- {'memberName': contextElement.name,
- 'className': contextElement.enclosingClass.name});
- compiler.reportInfo(contextElement, contextMessage);
+ compiler.createMessage(
+ errorneousElement,
+ errorMessage,
+ {'memberName': contextElement.name,
+ 'className': contextElement.enclosingClass.name}),
+ <DiagnosticMessage>[
+ compiler.createMessage(contextElement, contextMessage),
+ ]);
}
/// Compute all class and interface names by the [name] in [cls].
@@ -683,9 +713,11 @@ class InterfaceMembersCreator extends MembersCreator {
() => new Setlet<Member>()).add(inherited);
}
if (someAreGetters && !allAreGetters) {
- compiler.reportWarning(cls,
- MessageKind.INHERIT_GETTER_AND_METHOD,
- {'class': thisType, 'name': name.text });
+ DiagnosticMessage warning = compiler.createMessage(
+ cls,
+ MessageKind.INHERIT_GETTER_AND_METHOD,
+ {'class': thisType, 'name': name.text });
+ List<DiagnosticMessage> infos = <DiagnosticMessage>[];
for (Member inherited in inheritedMembers) {
MessageKind kind;
if (inherited.isMethod) {
@@ -700,9 +732,12 @@ class InterfaceMembersCreator extends MembersCreator {
kind = MessageKind.INHERITED_EXPLICIT_GETTER;
}
}
- compiler.reportInfo(inherited.element, kind,
- {'class': inherited.declarer, 'name': name.text });
+ infos.add(compiler.createMessage(
+ inherited.element,
+ kind,
+ {'class': inherited.declarer, 'name': name.text}));
}
+ compiler.reportWarning(warning, infos);
interfaceMembers[name] = new ErroneousMember(inheritedMembers);
} else if (subtypesOfAllInherited.length == 1) {
// All signatures have the same type.
« no previous file with comments | « pkg/compiler/lib/src/resolution/class_hierarchy.dart ('k') | pkg/compiler/lib/src/resolution/constructors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698