Skip to content

Commit 4552190

Browse files
committed
Fix
1 parent d33e50b commit 4552190

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

rules-tests/Php80/Rector/Class_/AnnotationToAttributeRector/Fixture/open_api_property_example_keep_numeric_string.php.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use OpenApi\Attributes as OA;
2424

2525
final class OpenAPIPropertyExampleKeepNumericString
2626
{
27-
#[OA\Property(example: '1112')]
27+
#[OA\Property(example: '01112')]
2828
public ?string $uid = null;
2929
}
3030

src/PhpAttribute/AttributeArrayNameInliner.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,19 @@
1515

1616
final class AttributeArrayNameInliner
1717
{
18+
/**
19+
* @var class-string
20+
*/
21+
private const OPEN_API_PROPERTY_ATTRIBUTE = 'OpenApi\Attributes\Property';
22+
1823
/**
1924
* @param Array_|list<Arg> $array
2025
* @return list<Arg>
2126
*/
22-
public function inlineArrayToArgs(Array_|array $array): array
27+
public function inlineArrayToArgs(Array_|array $array, ?string $attributeClass = null): array
2328
{
2429
if (is_array($array)) {
25-
return $this->inlineArray($array);
30+
return $this->inlineArray($array, $attributeClass);
2631
}
2732

2833
return $this->inlineArrayNode($array);
@@ -56,11 +61,16 @@ private function inlineArrayNode(Array_ $array): array
5661
* @param list<Arg> $args
5762
* @return list<Arg>
5863
*/
59-
private function inlineArray(array $args): array
64+
private function inlineArray(array $args, ?string $attributeClass = null): array
6065
{
6166
Assert::allIsAOf($args, Arg::class);
62-
6367
foreach ($args as $arg) {
68+
if ($attributeClass === self::OPEN_API_PROPERTY_ATTRIBUTE
69+
&& $arg->name instanceof Identifier
70+
&& $arg->name->toString() === 'example') {
71+
continue;
72+
}
73+
6474
if ($arg->value instanceof String_ && is_numeric($arg->value->value)) {
6575
// use equal over identical on purpose to verify if it is an integer
6676
if ((float) $arg->value->value == (int) $arg->value->value) {

src/PhpAttribute/NodeFactory/PhpAttributeGroupFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public function create(
8585

8686
$this->annotationToAttributeIntegerValueCaster->castAttributeTypes($annotationToAttribute, $args);
8787

88-
$args = $this->attributeArrayNameInliner->inlineArrayToArgs($args);
88+
$args = $this->attributeArrayNameInliner->inlineArrayToArgs($args, $annotationToAttribute->getAttributeClass());
8989

9090
$attributeName = $this->attributeNameFactory->create(
9191
$annotationToAttribute,

0 commit comments

Comments
 (0)