| 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
|
|
|