in src/CodegenShape.hack [51:78]
public function appendToBuilder(HackBuilder $builder): HackBuilder {
$builder->addLine('shape(')->indent();
foreach ($this->members as $member) {
$prefix = $member->getIsOptional() ? '?' : '';
$builder->addLinef(
"%s'%s' => %s,",
$prefix,
$member->getName(),
$member->getType(),
);
}
$manual_id = $this->manualAttrsID;
if ($manual_id !== null) {
$builder
->ensureNewLine()
->startManualSection($manual_id)
->ensureEmptyLine()
->endManualSection();
}
if ($this->allowsSubtyping()) {
$builder->ensureNewLine()->addLine('...');
}
return $builder->unindent()->add(')');
}