Source
@override
Accessor get overriddenElement {
assert(package.allLibrariesAdded);
if (_overriddenElement == null) {
Element parent = element.enclosingElement;
if (parent is ClassElement) {
for (InterfaceType t in getAllSupertypes(parent)) {
Element accessor = this.isGetter
? t.getGetter(element.name)
: t.getSetter(element.name);
if (accessor != null) {
if (accessor is Member) {
accessor = Package.getBasestElement(accessor);
}
Class parentClass = new ModelElement.from(
parent, package.findOrCreateLibraryFor(parent));
List<Field> possibleFields = [];
possibleFields.addAll(parentClass.allInstanceProperties);
possibleFields.addAll(parentClass.staticProperties);
String fieldName = accessor.name.replaceFirst('=', '');
_overriddenElement = new ModelElement.from(accessor, library,
enclosingCombo: possibleFields
.firstWhere((f) => f.element.name == fieldName));
break;
}
}
}
}
return _overriddenElement;
}