Skip to content

Commit d986994

Browse files
Fix beforeNormalization
1 parent cc9d9ac commit d986994

File tree

2 files changed

+38
-38
lines changed

2 files changed

+38
-38
lines changed

extension.neon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ services:
182182
tags: [phpstan.broker.dynamicMethodReturnTypeExtension]
183183
arguments:
184184
className: Symfony\Component\Config\Definition\Builder\NodeDefinition
185-
methods: [children, validate]
185+
methods: [children, validate, beforeNormalization]
186186

187187
# NodeDefinition::end() return type
188188
-

tests/Type/Symfony/Config/TreeBuilderTest.php

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use Iterator;
66
use PHPStan\Type\Symfony\ExtensionTestCase;
7-
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
87

98
final class TreeBuilderTest extends ExtensionTestCase
109
{
@@ -14,20 +13,6 @@ final class TreeBuilderTest extends ExtensionTestCase
1413
*/
1514
public function testGet(string $expression, string $type): void
1615
{
17-
$arrayTreeBuilder = new TreeBuilder('my_tree', 'array');
18-
$arrayRootNode = $arrayTreeBuilder->getRootNode();
19-
$r = $arrayRootNode
20-
->children()
21-
->arrayNode('methods')
22-
->prototype('scalar')
23-
->validate()
24-
->ifNotInArray(['one', 'two'])
25-
->thenInvalid('%s is not a valid method.')
26-
->end()
27-
->end()
28-
->end()
29-
->end();
30-
3116
$this->processFile(
3217
__DIR__ . '/tree_builder.php',
3318
$expression,
@@ -38,7 +23,7 @@ public function testGet(string $expression, string $type): void
3823
new ReturnParentDynamicReturnTypeExtension('Symfony\Component\Config\Definition\Builder\NodeBuilder', ['end']),
3924
new ReturnParentDynamicReturnTypeExtension('Symfony\Component\Config\Definition\Builder\NodeDefinition', ['end']),
4025
new PassParentObjectDynamicReturnTypeExtension('Symfony\Component\Config\Definition\Builder\NodeBuilder', ['arrayNode', 'scalarNode', 'booleanNode', 'integerNode', 'floatNode', 'enumNode', 'variableNode']),
41-
new PassParentObjectDynamicReturnTypeExtension('Symfony\Component\Config\Definition\Builder\NodeDefinition', ['children', 'validate']),
26+
new PassParentObjectDynamicReturnTypeExtension('Symfony\Component\Config\Definition\Builder\NodeDefinition', ['children', 'validate', 'beforeNormalization']),
4227
new TreeBuilderGetRootNodeDynamicReturnTypeExtension(),
4328
],
4429
[new TreeBuilderDynamicReturnTypeExtension()]
@@ -153,35 +138,50 @@ public function getProvider(): Iterator
153138
yield ['
154139
$arrayRootNode
155140
->children()
156-
->arrayNode("methods")
157-
->prototype("scalar")
158-
->defaultNull()
159-
->end()
160-
->end()
161-
->end()
141+
->arrayNode("methods")
142+
->prototype("scalar")
143+
->defaultNull()
144+
->end()
145+
->end()
146+
->end()
162147
', 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition'];
163148
yield ['
164149
$arrayRootNode
165150
->children()
166-
->arrayNode("methods")
167-
->scalarPrototype()
168-
->defaultNull()
169-
->end()
170-
->end()
171-
->end()
151+
->arrayNode("methods")
152+
->scalarPrototype()
153+
->defaultNull()
154+
->end()
155+
->end()
156+
->end()
172157
', 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition'];
173158
yield ['
174159
$arrayRootNode
175160
->children()
176-
->arrayNode("methods")
177-
->prototype("scalar")
178-
->validate()
179-
->ifNotInArray(["one", "two"])
180-
->thenInvalid("%s is not a valid method.")
181-
->end()
182-
->end()
183-
->end()
184-
->end()
161+
->arrayNode("methods")
162+
->prototype("scalar")
163+
->validate()
164+
->ifNotInArray(["one", "two"])
165+
->thenInvalid("%s is not a valid method.")
166+
->end()
167+
->end()
168+
->end()
169+
->end()
170+
', 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition'];
171+
yield ['
172+
$arrayRootNode
173+
->children()
174+
->arrayNode("methods")
175+
->prototype("array")
176+
->beforeNormalization()
177+
->ifString()
178+
->then(static function ($v) {
179+
return [$v];
180+
})
181+
->end()
182+
->end()
183+
->end()
184+
->end()
185185
', 'Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition'];
186186

187187
yield ['$variableRootNode', 'Symfony\Component\Config\Definition\Builder\VariableNodeDefinition'];

0 commit comments

Comments
 (0)