@@ -75,6 +75,7 @@ class InheritanceManager3 {
75
75
type.element,
76
76
interface ._inheritedMap,
77
77
interface ._overridden,
78
+ doTopMerge: false ,
78
79
);
79
80
}
80
81
return interface ._inheritedMap;
@@ -137,6 +138,7 @@ class InheritanceManager3 {
137
138
classElement,
138
139
superClass,
139
140
superClassCandidates,
141
+ doTopMerge: true ,
140
142
);
141
143
superImplemented.add (superClass);
142
144
} else {
@@ -210,6 +212,7 @@ class InheritanceManager3 {
210
212
classElement,
211
213
map,
212
214
candidatesFromSuperAndMixin,
215
+ doTopMerge: true ,
213
216
);
214
217
for (var entry in map.entries) {
215
218
namedCandidates[entry.key] = [entry.value];
@@ -260,6 +263,7 @@ class InheritanceManager3 {
260
263
classElement,
261
264
map,
262
265
namedCandidates,
266
+ doTopMerge: true ,
263
267
);
264
268
265
269
var noSuchMethodForwarders = < Name > {};
@@ -446,9 +450,11 @@ class InheritanceManager3 {
446
450
/// such single most specific signature (i.e. no valid override), then add a
447
451
/// new conflict description.
448
452
List <Conflict > _findMostSpecificFromNamedCandidates (
449
- ClassElement targetClass,
450
- Map <Name , ExecutableElement > map,
451
- Map <Name , List <ExecutableElement >> namedCandidates) {
453
+ ClassElement targetClass,
454
+ Map <Name , ExecutableElement > map,
455
+ Map <Name , List <ExecutableElement >> namedCandidates, {
456
+ @required bool doTopMerge,
457
+ }) {
452
458
TypeSystemImpl typeSystem = targetClass.library.typeSystem;
453
459
454
460
List <Conflict > conflicts;
@@ -498,7 +504,11 @@ class InheritanceManager3 {
498
504
continue ;
499
505
}
500
506
501
- map[name] = _topMerge (typeSystem, targetClass, validOverrides);
507
+ if (doTopMerge) {
508
+ map[name] = _topMerge (typeSystem, targetClass, validOverrides);
509
+ } else {
510
+ map[name] = validOverrides.first;
511
+ }
502
512
}
503
513
504
514
return conflicts;
0 commit comments