setGeneratedFrom($generated_from); * */ final class CodegenGeneratedFrom implements ICodeBuilderRenderer { use HackBuilderRenderer; public function __construct(private string $msg) {} public function appendToBuilder(HackBuilder $builder): HackBuilder { return $builder->add($this->msg); } } function codegen_generated_from_class(string $class): CodegenGeneratedFrom { return new CodegenGeneratedFrom("Generated from $class"); } function codegen_generated_from_method( string $class, string $method ): CodegenGeneratedFrom { return new CodegenGeneratedFrom("Generated from $class::$method()"); } function codegen_generated_from_method_with_key( string $class, string $method, string $key ): CodegenGeneratedFrom { return new CodegenGeneratedFrom("Generated from $class::$method()['$key']"); } function codegen_generated_from_script( ?string $script = null ): CodegenGeneratedFrom { if ($script === null) { $trace = debug_backtrace(); $last = end($trace); invariant( $last !== false, "Couldn't get the strack trace. Please pass the script name to ". "codegen_generated_from_script", ); $script = codegen_file($last['file'])->getRelativeFileName(); } return new CodegenGeneratedFrom("To re-generate this file run $script"); }