Index: pkg/analysis_server/lib/src/computer/computer_overrides.dart |
diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart |
index 4c8cc8f1afe3498cf8f85c37d26e851c2e59765c..b817147a4273bebc22fc58ce26d48f219363d0b2 100644 |
--- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart |
+++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart |
@@ -51,8 +51,11 @@ class DartUnitOverridesComputer { |
return _overrides; |
} |
- void _addInterfaceOverrides(List<engine.Element> elements, String name, |
- engine.InterfaceType type, bool checkType, |
+ void _addInterfaceOverrides( |
+ Set<engine.Element> elements, |
+ String name, |
+ engine.InterfaceType type, |
+ bool checkType, |
Set<engine.InterfaceType> visited) { |
if (type == null) { |
return; |
@@ -65,6 +68,7 @@ class DartUnitOverridesComputer { |
engine.Element element = _lookupMember(type.element, name); |
if (element != null) { |
elements.add(element); |
+ return; |
} |
} |
// check interfaces |
@@ -85,9 +89,10 @@ class DartUnitOverridesComputer { |
} |
} |
// interfaces |
- List<engine.Element> interfaceEngineElements = <engine.Element>[]; |
+ Set<engine.Element> interfaceEngineElements = new Set<engine.Element>(); |
_addInterfaceOverrides(interfaceEngineElements, name, _currentClass.type, |
false, new Set<engine.InterfaceType>()); |
+ interfaceEngineElements.remove(superEngineElement); |
// is there any override? |
if (superEngineElement != null || interfaceEngineElements.isNotEmpty) { |
OverriddenMember superMember = superEngineElement != null |