Extract method reportInheritanceConflict
Change-Id: Iea1808c45a1380feaf0c298c341f00c74cde7c57
Reviewed-on: https://dart-review.googlesource.com/c/88940
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index e855fc7..505559d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -93,24 +93,7 @@
return a;
}
if (isInheritanceConflict(a, b)) {
- String name = a.fullNameForErrors;
- if (mergeKind == MergeKind.interfaces) {
- cls.addProblem(messageInheritedMembersConflict, cls.charOffset,
- cls.fullNameForErrors.length,
- context: <LocatedMessage>[
- messageInheritedMembersConflictCause1.withLocation(
- a.fileUri, a.charOffset, name.length),
- messageInheritedMembersConflictCause2.withLocation(
- b.fileUri, b.charOffset, name.length),
- ]);
- } else {
- cls.addProblem(messageDeclaredMemberConflictsWithInheritedMember,
- a.charOffset, name.length,
- context: <LocatedMessage>[
- messageDeclaredMemberConflictsWithInheritedMemberCause
- .withLocation(b.fileUri, b.charOffset, name.length)
- ]);
- }
+ reportInheritanceConflict(cls, a, b, mergeKind);
}
Declaration result = a;
if (mergeKind == MergeKind.interfaces) {
@@ -137,6 +120,28 @@
return result;
}
+ void reportInheritanceConflict(KernelClassBuilder cls, Declaration a,
+ Declaration b, MergeKind mergeKind) {
+ String name = a.fullNameForErrors;
+ if (mergeKind == MergeKind.interfaces) {
+ cls.addProblem(messageInheritedMembersConflict, cls.charOffset,
+ cls.fullNameForErrors.length,
+ context: <LocatedMessage>[
+ messageInheritedMembersConflictCause1.withLocation(
+ a.fileUri, a.charOffset, name.length),
+ messageInheritedMembersConflictCause2.withLocation(
+ b.fileUri, b.charOffset, name.length),
+ ]);
+ } else {
+ cls.addProblem(messageDeclaredMemberConflictsWithInheritedMember,
+ a.charOffset, name.length,
+ context: <LocatedMessage>[
+ messageDeclaredMemberConflictsWithInheritedMemberCause.withLocation(
+ b.fileUri, b.charOffset, name.length)
+ ]);
+ }
+ }
+
/// If [mergeKind] is `MergeKind.superclass` [member] is declared in current
/// class, and isn't overriding a method from the superclass.
///