Source
List<Method> get inheritedMethods {
if (_inheritedMethods != null) return _inheritedMethods;
Map<String, ExecutableElement> cmap =
library.inheritanceManager.getMembersInheritedFromClasses(element);
Map<String, ExecutableElement> imap =
library.inheritanceManager.getMembersInheritedFromInterfaces(element);
// remove methods that exist on this class
_methods.forEach((method) {
cmap.remove(method.name);
imap.remove(method.name);
});
_inheritedMethods = [];
List<ExecutableElement> values = [];
Set<String> uniqueNames = new Set();
instanceProperties.forEach((f) {
if (f._setter != null) uniqueNames.add(f._setter.name);
if (f._getter != null) uniqueNames.add(f._getter.name);
});
for (String key in cmap.keys) {
// XXX: if we care about showing a hierarchy with our inherited methods,
// then don't do this
if (uniqueNames.contains(key)) continue;
uniqueNames.add(key);
values.add(cmap[key]);
}
for (String key in imap.keys) {
// XXX: if we care about showing a hierarchy with our inherited methods,
// then don't do this
if (uniqueNames.contains(key)) continue;
uniqueNames.add(key);
values.add(imap[key]);
}
for (ExecutableElement value in values) {
if (value != null &&
value is MethodElement &&
isPublic(value) &&
!value.isOperator &&
value.enclosingElement != null) {
if (!package.isDocumented(value.enclosingElement)) {
Method m =
new ModelElement.from(value, library, enclosingClass: this);
_inheritedMethods.add(m);
_genPageMethods.add(m);
} else {
_inheritedMethods
.add(new ModelElement.from(value, library, enclosingClass: this));
}
}
}
_inheritedMethods.sort(byName);
return _inheritedMethods;
}