public function appendToBuilder()

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(')');
  }