Preserve nested items enum validation

This commit is contained in:
Chirag Aggarwal
2026-04-22 15:33:18 +05:30
parent 481eaf7530
commit 038be90969
+8 -4
View File
@@ -343,9 +343,9 @@ class Specs extends Action
}
}
private function collectSpecEnumNames(array $node, array &$enums, ?string $fallbackName = null): void
private function collectSpecEnumNames(array $node, array &$enums, ?string $fallbackName = null, bool $skipCurrentEnum = false): void
{
if (isset($node['enum']) && \is_array($node['enum'])) {
if (!$skipCurrentEnum && isset($node['enum']) && \is_array($node['enum'])) {
$enumName = $this->getExplicitSpecEnumName($node)
?? $this->getFallbackSpecEnumName($node, $fallbackName);
@@ -354,6 +354,7 @@ class Specs extends Action
}
}
$itemsEnumHandled = false;
if (
isset($node['items'])
&& \is_array($node['items'])
@@ -367,6 +368,8 @@ class Specs extends Action
if (!\is_null($enumName)) {
$this->addSpecEnumName($enums, $enumName);
}
$itemsEnumHandled = true;
}
$explicitEnumName = $this->getExplicitSpecEnumName($node);
@@ -375,14 +378,15 @@ class Specs extends Action
}
foreach ($node as $key => $value) {
if ($key === 'items' || !\is_array($value)) {
if (!\is_array($value)) {
continue;
}
$this->collectSpecEnumNames(
$value,
$enums,
$this->getChildSpecEnumFallbackName($node, $key, $value, $fallbackName)
$this->getChildSpecEnumFallbackName($node, $key, $value, $fallbackName),
$key === 'items' && $itemsEnumHandled
);
}
}