| Index: pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
|
| diff --git a/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart b/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
|
| index f96f42f2b21774dc8d367ecaa129abe52d2f3980..2321ee388089942e2370b6a0fa481962b9f43d6f 100644
|
| --- a/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
|
| +++ b/pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart
|
| @@ -54,23 +54,38 @@ class ImplementedComputer {
|
| }
|
|
|
| void _addMemberIfImplemented(Element element) {
|
| - if (!element.isSynthetic) {
|
| - String name = element.displayName;
|
| - if (name != null && _hasOverride(name)) {
|
| - _addImplementedMember(element);
|
| - }
|
| + if (element.isSynthetic || _isStatic(element)) {
|
| + return;
|
| + }
|
| + String name = element.displayName;
|
| + if (name != null && _hasOverride(name)) {
|
| + _addImplementedMember(element);
|
| }
|
| }
|
|
|
| bool _hasOverride(String name) {
|
| for (ClassElement subtype in subtypes) {
|
| - if (subtype.getMethod(name) != null) {
|
| - return true;
|
| + MethodElement method = subtype.getMethod(name);
|
| + if (method != null) {
|
| + return !method.isStatic;
|
| }
|
| - if (subtype.getField(name) != null) {
|
| - return true;
|
| + FieldElement field = subtype.getField(name);
|
| + if (field != null) {
|
| + return !field.isStatic;
|
| }
|
| }
|
| return false;
|
| }
|
| +
|
| + /**
|
| + * Return `true` if the given [element] is a static element.
|
| + */
|
| + static bool _isStatic(Element element) {
|
| + if (element is ExecutableElement) {
|
| + return element.isStatic;
|
| + } else if (element is PropertyInducingElement) {
|
| + return element.isStatic;
|
| + }
|
| + return false;
|
| + }
|
| }
|
|
|