| 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 b817147a4273bebc22fc58ce26d48f219363d0b2..23ca2550e68f74c52631dcbd4dc0358da871a42c 100644
 | 
| --- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart
 | 
| +++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
 | 
| @@ -13,6 +13,26 @@ import 'package:analyzer/src/generated/element.dart' as engine;
 | 
|   * A computer for class member overrides in a Dart [CompilationUnit].
 | 
|   */
 | 
|  class DartUnitOverridesComputer {
 | 
| +  static const List<ElementKind> FIELD_KINDS = const <ElementKind>[
 | 
| +    ElementKind.FIELD,
 | 
| +    ElementKind.GETTER,
 | 
| +    ElementKind.SETTER
 | 
| +  ];
 | 
| +
 | 
| +  static const List<ElementKind> GETTER_KINDS = const <ElementKind>[
 | 
| +    ElementKind.FIELD,
 | 
| +    ElementKind.GETTER
 | 
| +  ];
 | 
| +
 | 
| +  static const List<ElementKind> METHOD_KINDS = const <ElementKind>[
 | 
| +    ElementKind.METHOD
 | 
| +  ];
 | 
| +
 | 
| +  static const List<ElementKind> SETTER_KINDS = const <ElementKind>[
 | 
| +    ElementKind.FIELD,
 | 
| +    ElementKind.SETTER
 | 
| +  ];
 | 
| +
 | 
|    final CompilationUnit _unit;
 | 
|  
 | 
|    final List<Override> _overrides = <Override>[];
 | 
| @@ -33,7 +53,16 @@ class DartUnitOverridesComputer {
 | 
|                continue;
 | 
|              }
 | 
|              SimpleIdentifier nameNode = classMember.name;
 | 
| -            _addOverride(nameNode.offset, nameNode.length, nameNode.name);
 | 
| +            List<ElementKind> kinds;
 | 
| +            if (classMember.isGetter) {
 | 
| +              kinds = GETTER_KINDS;
 | 
| +            } else if (classMember.isSetter) {
 | 
| +              kinds = SETTER_KINDS;
 | 
| +            } else {
 | 
| +              kinds = METHOD_KINDS;
 | 
| +            }
 | 
| +            _addOverride(
 | 
| +                nameNode.offset, nameNode.length, nameNode.name, kinds);
 | 
|            }
 | 
|            if (classMember is FieldDeclaration) {
 | 
|              if (classMember.isStatic) {
 | 
| @@ -42,7 +71,8 @@ class DartUnitOverridesComputer {
 | 
|              List<VariableDeclaration> fields = classMember.fields.variables;
 | 
|              for (VariableDeclaration field in fields) {
 | 
|                SimpleIdentifier nameNode = field.name;
 | 
| -              _addOverride(nameNode.offset, nameNode.length, nameNode.name);
 | 
| +              _addOverride(
 | 
| +                  nameNode.offset, nameNode.length, nameNode.name, FIELD_KINDS);
 | 
|              }
 | 
|            }
 | 
|          }
 | 
| @@ -54,6 +84,7 @@ class DartUnitOverridesComputer {
 | 
|    void _addInterfaceOverrides(
 | 
|        Set<engine.Element> elements,
 | 
|        String name,
 | 
| +      List<ElementKind> kinds,
 | 
|        engine.InterfaceType type,
 | 
|        bool checkType,
 | 
|        Set<engine.InterfaceType> visited) {
 | 
| @@ -65,7 +96,7 @@ class DartUnitOverridesComputer {
 | 
|      }
 | 
|      // check type
 | 
|      if (checkType) {
 | 
| -      engine.Element element = _lookupMember(type.element, name);
 | 
| +      engine.Element element = _lookupMember(type.element, name, kinds);
 | 
|        if (element != null) {
 | 
|          elements.add(element);
 | 
|          return;
 | 
| @@ -73,25 +104,28 @@ class DartUnitOverridesComputer {
 | 
|      }
 | 
|      // check interfaces
 | 
|      for (engine.InterfaceType interfaceType in type.interfaces) {
 | 
| -      _addInterfaceOverrides(elements, name, interfaceType, true, visited);
 | 
| +      _addInterfaceOverrides(
 | 
| +          elements, name, kinds, interfaceType, true, visited);
 | 
|      }
 | 
|      // check super
 | 
| -    _addInterfaceOverrides(elements, name, type.superclass, checkType, visited);
 | 
| +    _addInterfaceOverrides(
 | 
| +        elements, name, kinds, type.superclass, checkType, visited);
 | 
|    }
 | 
|  
 | 
| -  void _addOverride(int offset, int length, String name) {
 | 
| +  void _addOverride(
 | 
| +      int offset, int length, String name, List<ElementKind> kinds) {
 | 
|      // super
 | 
|      engine.Element superEngineElement;
 | 
|      {
 | 
|        engine.InterfaceType superType = _currentClass.supertype;
 | 
|        if (superType != null) {
 | 
| -        superEngineElement = _lookupMember(superType.element, name);
 | 
| +        superEngineElement = _lookupMember(superType.element, name, kinds);
 | 
|        }
 | 
|      }
 | 
|      // interfaces
 | 
|      Set<engine.Element> interfaceEngineElements = new Set<engine.Element>();
 | 
| -    _addInterfaceOverrides(interfaceEngineElements, name, _currentClass.type,
 | 
| -        false, new Set<engine.InterfaceType>());
 | 
| +    _addInterfaceOverrides(interfaceEngineElements, name, kinds,
 | 
| +        _currentClass.type, false, new Set<engine.InterfaceType>());
 | 
|      interfaceEngineElements.remove(superEngineElement);
 | 
|      // is there any override?
 | 
|      if (superEngineElement != null || interfaceEngineElements.isNotEmpty) {
 | 
| @@ -108,25 +142,32 @@ class DartUnitOverridesComputer {
 | 
|    }
 | 
|  
 | 
|    static engine.Element _lookupMember(
 | 
| -      engine.ClassElement classElement, String name) {
 | 
| +      engine.ClassElement classElement, String name, List<ElementKind> kinds) {
 | 
|      if (classElement == null) {
 | 
|        return null;
 | 
|      }
 | 
|      engine.LibraryElement library = classElement.library;
 | 
| +    engine.Element member;
 | 
|      // method
 | 
| -    engine.Element member = classElement.lookUpMethod(name, library);
 | 
| -    if (member != null) {
 | 
| -      return member;
 | 
| +    if (kinds.contains(ElementKind.METHOD)) {
 | 
| +      member = classElement.lookUpMethod(name, library);
 | 
| +      if (member != null) {
 | 
| +        return member;
 | 
| +      }
 | 
|      }
 | 
|      // getter
 | 
| -    member = classElement.lookUpGetter(name, library);
 | 
| -    if (member != null) {
 | 
| -      return member;
 | 
| +    if (kinds.contains(ElementKind.GETTER)) {
 | 
| +      member = classElement.lookUpGetter(name, library);
 | 
| +      if (member != null) {
 | 
| +        return member;
 | 
| +      }
 | 
|      }
 | 
|      // setter
 | 
| -    member = classElement.lookUpSetter(name + '=', library);
 | 
| -    if (member != null) {
 | 
| -      return member;
 | 
| +    if (kinds.contains(ElementKind.SETTER)) {
 | 
| +      member = classElement.lookUpSetter(name + '=', library);
 | 
| +      if (member != null) {
 | 
| +        return member;
 | 
| +      }
 | 
|      }
 | 
|      // not found
 | 
|      return null;
 | 
| 
 |