From 7c0cd3df91233d555790ebc460aea18dea1962c9 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 25 Jun 2026 07:22:52 +0200 Subject: [PATCH] Utilize `BleedingEdgeToggle::withBleedingEdge` to simplify another test --- .../Type/Constant/ConstantArrayTypeTest.php | 70 +++++++++---------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/tests/PHPStan/Type/Constant/ConstantArrayTypeTest.php b/tests/PHPStan/Type/Constant/ConstantArrayTypeTest.php index c0ecc6e78d..c705e58646 100644 --- a/tests/PHPStan/Type/Constant/ConstantArrayTypeTest.php +++ b/tests/PHPStan/Type/Constant/ConstantArrayTypeTest.php @@ -1626,31 +1626,47 @@ public function testSealedness(): void public static function dataGetArraySize(): iterable { - // Accumulate into one array and return it (no `yield`), so the toggle is never held - // across a suspension point and cannot leak into other tests. - $bleedingEdgeBackup = BleedingEdgeToggle::isBleedingEdge(); - $cases = []; foreach ([false, true] as $bleedingEdge) { - BleedingEdgeToggle::setBleedingEdge($bleedingEdge); - - $cases[] = [ - new ConstantArrayType([], []), - new ConstantIntegerType(0), - ]; + BleedingEdgeToggle::withBleedingEdge($bleedingEdge, static function () use (&$cases) { + $cases[] = [ + new ConstantArrayType([], []), + new ConstantIntegerType(0), + ]; + + $builder = ConstantArrayTypeBuilder::createEmpty(); + $cases[] = [ + $builder->getArray(), + new ConstantIntegerType(0), + ]; + + $builder->makeUnsealed(new IntegerType(), new ObjectType(stdClass::class)); + $cases[] = [ + $builder->getArray(), + IntegerRangeType::createAllGreaterThanOrEqualTo(0), + ]; + + $builder->setOffsetValueType(new ConstantIntegerType(0), new ObjectType(stdClass::class)); + $cases[] = [ + $builder->getArray(), + IntegerRangeType::createAllGreaterThanOrEqualTo(1), + ]; + + $builder->setOffsetValueType(new ConstantIntegerType(1), new ObjectType(stdClass::class), true); + $cases[] = [ + $builder->getArray(), + IntegerRangeType::createAllGreaterThanOrEqualTo(1), + ]; + }); + } + BleedingEdgeToggle::withBleedingEdge(true, static function () use (&$cases) { $builder = ConstantArrayTypeBuilder::createEmpty(); - $cases[] = [ - $builder->getArray(), - new ConstantIntegerType(0), - ]; - $builder->makeUnsealed(new IntegerType(), new ObjectType(stdClass::class)); $cases[] = [ $builder->getArray(), IntegerRangeType::createAllGreaterThanOrEqualTo(0), ]; - $builder->setOffsetValueType(new ConstantIntegerType(0), new ObjectType(stdClass::class)); $cases[] = [ $builder->getArray(), @@ -1662,27 +1678,7 @@ public static function dataGetArraySize(): iterable $builder->getArray(), IntegerRangeType::createAllGreaterThanOrEqualTo(1), ]; - } - - $builder = ConstantArrayTypeBuilder::createEmpty(); - $builder->makeUnsealed(new IntegerType(), new ObjectType(stdClass::class)); - $cases[] = [ - $builder->getArray(), - IntegerRangeType::createAllGreaterThanOrEqualTo(0), - ]; - $builder->setOffsetValueType(new ConstantIntegerType(0), new ObjectType(stdClass::class)); - $cases[] = [ - $builder->getArray(), - IntegerRangeType::createAllGreaterThanOrEqualTo(1), - ]; - - $builder->setOffsetValueType(new ConstantIntegerType(1), new ObjectType(stdClass::class), true); - $cases[] = [ - $builder->getArray(), - IntegerRangeType::createAllGreaterThanOrEqualTo(1), - ]; - - BleedingEdgeToggle::setBleedingEdge($bleedingEdgeBackup); + }); return $cases; }