in src/UriBuilderCodegenBuilder.hack [97:134]
protected function getCodegenTrait(self::TSpec $spec): CodegenTrait {
$trait = Shapes::idx($spec, 'trait');
invariant(
$trait !== null,
"Can't codegen a trait without a trait spec",
);
$controller = $spec['controller'];
$parameters = $controller::getUriPattern()->getParameters();
$method = $this->cg
->codegenMethod($trait['method'])
->setIsFinal(true)
->setIsStatic(true)
->setReturnType($this->uriType);
if ($parameters->isEmpty()) {
$method->setBodyf(
'return %s::%s();',
$spec['class']['name'],
$this->uriGetter,
);
} else {
$method
->addParameterf(
'%s::TParameters $parameters',
$spec['class']['name'],
)
->setBodyf(
'return %s::%s($parameters);',
$spec['class']['name'],
$this->uriGetter,
);
}
return $this->cg
->codegenTrait($trait['name'])
->addMethod($method);
}