Source
List<Operator> get inheritedOperators {
if (_inheritedOperators != null) return _inheritedOperators;
Map<String, ExecutableElement> cmap =
library.inheritanceManager.getMembersInheritedFromClasses(element);
Map<String, ExecutableElement> imap =
library.inheritanceManager.getMembersInheritedFromInterfaces(element);
operators.forEach((operator) {
cmap.remove(operator.element.name);
imap.remove(operator.element.name);
});
_inheritedOperators = [];
Map<String, ExecutableElement> values = {};
bool _isInheritedOperator(ExecutableElement value) {
if (value != null &&
value is MethodElement &&
!value.isPrivate &&
value.isOperator &&
value.enclosingElement != null) {
return true;
}
return false;
}
for (String key in imap.keys) {
ExecutableElement value = imap[key];
if (_isInheritedOperator(value)) {
values.putIfAbsent(value.name, () => value);
}
}
for (String key in cmap.keys) {
ExecutableElement value = cmap[key];
if (_isInheritedOperator(value)) {
values.putIfAbsent(value.name, () => value);
}
}
for (ExecutableElement value in values.values) {
if (!package.isDocumented(value.enclosingElement)) {
Operator o =
new ModelElement.from(value, library, enclosingClass: this);
_inheritedOperators.add(o);
_genPageOperators.add(o);
} else {
_inheritedOperators
.add(new ModelElement.from(value, library, enclosingClass: this));
}
}
_inheritedOperators.sort(byName);
return _inheritedOperators;
}