src/Compiler/Command/Build/BuildEnumTypeDefinitionCommand.php
<?php
declare(strict_types=1);
namespace Railt\SDL\Compiler\Command\Build;
use Railt\SDL\Compiler\Command\BuildCommand;
use Railt\SDL\Compiler\Command\Evaluate\EvaluateDirective;
use Railt\SDL\Node\Statement\Definition\EnumTypeDefinitionNode;
use Railt\SDL\Node\Statement\Extension\EnumTypeExtensionNode;
use Railt\TypeSystem\Definition\Type\EnumType;
/**
* @template-extends BuildCommand<EnumTypeDefinitionNode|EnumTypeExtensionNode, EnumType>
*
* @internal This is an internal library class, please do not use it in your code.
* @psalm-internal Railt\SDL\Compiler\Command
*/
final class BuildEnumTypeDefinitionCommand extends BuildCommand
{
public function exec(): void
{
foreach ($this->node->fields as $node) {
$this->ctx->push(new BuildEnumValueDefinitionCommand(
ctx: $this->ctx,
node: $node,
definition: $this->definition,
));
}
foreach ($this->node->directives as $node) {
$this->ctx->push(new EvaluateDirective(
ctx: $this->ctx,
node: $node,
parent: $this->definition,
));
}
}
}