in src/PageSections/InterfaceSynopsis.hack [24:55]
private function walkMethods(
ScannedClassish $c,
): dict<string, (ScannedClassish, ScannedMethod)> {
if ($c === null) {
return dict[];
}
$methods =
Dict\pull($c->getMethods(), $m ==> tuple($c, $m), $m ==> $m->getName());
$parents = Vec\filter_nulls(
Vec\concat(vec[$c->getParentClassName()], $c->getInterfaceNames()),
);
$index = $this->context->getIndex();
foreach ($parents as $parent) {
$parent = $index['classes'][$parent]['definition'] ??
$index['interfaces'][$parent]['definition'] ??
null;
if (!$parent is ScannedClassish) {
continue;
}
foreach ($this->walkMethods($parent) as $name => $data) {
if (C\contains_key($methods, $name)) {
continue;
}
$methods[$name] = $data;
}
}
return $methods;
}