From ede3bd83d204c2541aaf650770812751b73f97dc Mon Sep 17 00:00:00 2001 From: Sebastian Blank Date: Wed, 3 Nov 2021 10:04:14 +0100 Subject: [PATCH 1/3] Fix: Incorrect return type for InputBag::all() --- .../Symfony/InputBagDynamicReturnTypeExtension.php | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php b/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php index f328ea86..0d4f4857 100644 --- a/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php +++ b/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php @@ -70,18 +70,11 @@ private function getAllTypeFromMethodCall( MethodCall $methodCall ): Type { - $types = [ - new BooleanType(), - new FloatType(), - new IntegerType(), - new StringType(), - ]; - $oneParameterType = new UnionType($types); if (isset($methodCall->getArgs()[0])) { - return new ArrayType(new MixedType(), $oneParameterType); + return new ArrayType(new MixedType(), new MixedType()); } - return new ArrayType(new StringType(), new UnionType([new ArrayType(new MixedType(), $oneParameterType), new BooleanType(), new FloatType(), new IntegerType(), new StringType()])); + return new ArrayType(new StringType(), new UnionType([new ArrayType(new MixedType(), new MixedType()), new BooleanType(), new FloatType(), new IntegerType(), new StringType()])); } } From 282896a0313eb69a20a23874061ce81bfc189b43 Mon Sep 17 00:00:00 2001 From: Sebastian Blank Date: Wed, 3 Nov 2021 10:10:10 +0100 Subject: [PATCH 2/3] Fix tests --- tests/Type/Symfony/data/input_bag.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Type/Symfony/data/input_bag.php b/tests/Type/Symfony/data/input_bag.php index c99fe6b6..4c836c5f 100644 --- a/tests/Type/Symfony/data/input_bag.php +++ b/tests/Type/Symfony/data/input_bag.php @@ -8,5 +8,5 @@ assertType('bool|float|int|string|null', $bag->get('foo', null)); assertType('bool|float|int|string', $bag->get('foo', '')); assertType('bool|float|int|string', $bag->get('foo', 'baz')); -assertType('array|bool|float|int|string>', $bag->all()); -assertType('array', $bag->all('bar')); +assertType('array', $bag->all()); +assertType('array', $bag->all('bar')); From 8af417f622236f27cc532065a759baf07bda0d50 Mon Sep 17 00:00:00 2001 From: Sebastian Blank Date: Wed, 3 Nov 2021 15:11:31 +0100 Subject: [PATCH 3/3] Use MixedType(true) --- src/Type/Symfony/InputBagDynamicReturnTypeExtension.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php b/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php index 0d4f4857..b4875829 100644 --- a/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php +++ b/src/Type/Symfony/InputBagDynamicReturnTypeExtension.php @@ -71,10 +71,10 @@ private function getAllTypeFromMethodCall( ): Type { if (isset($methodCall->getArgs()[0])) { - return new ArrayType(new MixedType(), new MixedType()); + return new ArrayType(new MixedType(), new MixedType(true)); } - return new ArrayType(new StringType(), new UnionType([new ArrayType(new MixedType(), new MixedType()), new BooleanType(), new FloatType(), new IntegerType(), new StringType()])); + return new ArrayType(new StringType(), new UnionType([new ArrayType(new MixedType(), new MixedType(true)), new BooleanType(), new FloatType(), new IntegerType(), new StringType()])); } }