in src/PageSections/_Private/stringify_functionish_signature.hack [18:65]
function stringify_functionish_signature(
StringifyFormat $format,
ScannedFunctionish $function,
?DocBlock $docs,
): string {
$ret = '';
$ns = $function->getNamespaceName();
if ($format === StringifyFormat::MULTI_LINE && $ns !== '') {
$ret .= 'namespace '.$ns.";\n\n";
$name = $function->getShortName();
} else {
$name = $function->getName();
}
if ($function is ScannedMethod) {
if ($function->isAbstract()) {
$ret .= 'abstract ';
}
if ($function->isFinal()) {
$ret .= 'final ';
}
if ($function->isPublic()) {
$ret .= 'public ';
} else if ($function->isPrivate()) {
$ret .= 'private ';
} else if ($function->isProtected()) {
$ret .= 'protected ';
}
if ($function->isStatic()) {
$ret .= 'static ';
}
}
$ret .= 'function '.$name;
$ret .= stringify_generics($ns, $function->getGenericTypes());
$ret .= stringify_parameters($ns, $format, $function, $docs);
$type = $function->getReturnType();
if ($type) {
$ret .= ': '.stringify_typehint($ns, $type);
}
$ret .= ';';
return $ret;
}