Skip to content

Commit 0843fcb

Browse files
committed
Merge branch '5.4' into 6.4
* 5.4: [VarDumper] Fix generator dump on PHP 8.4 keep boolean options when their value is false
2 parents 102f750 + e335c87 commit 0843fcb

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

Caster/ReflectionCaster.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,13 @@ public static function castGenerator(\Generator $c, array $a, Stub $stub, bool $
8989
// Cannot create ReflectionGenerator based on a terminated Generator
9090
try {
9191
$reflectionGenerator = new \ReflectionGenerator($c);
92+
93+
return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested);
9294
} catch (\Exception) {
9395
$a[Caster::PREFIX_VIRTUAL.'closed'] = true;
9496

9597
return $a;
9698
}
97-
98-
return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested);
9999
}
100100

101101
/**

Tests/Caster/ReflectionCasterTest.php

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,84 @@ class: "Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest"
463463
);
464464
}
465465

466+
/**
467+
* @requires PHP < 8.4
468+
*/
469+
public function testGeneratorPriorTo84()
470+
{
471+
if (\extension_loaded('xdebug')) {
472+
$this->markTestSkipped('xdebug is active');
473+
}
474+
475+
$generator = new GeneratorDemo();
476+
$generator = $generator->baz();
477+
478+
$expectedDump = <<<'EODUMP'
479+
Generator {
480+
this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …}
481+
%s: {
482+
%sGeneratorDemo.php:14 {
483+
Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo->baz()
484+
› {
485+
› yield from bar();
486+
› }
487+
}
488+
%A}
489+
closed: false
490+
}
491+
EODUMP;
492+
493+
$this->assertDumpMatchesFormat($expectedDump, $generator);
494+
495+
foreach ($generator as $v) {
496+
break;
497+
}
498+
499+
$expectedDump = <<<'EODUMP'
500+
array:2 [
501+
0 => ReflectionGenerator {
502+
this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …}
503+
%s: {
504+
%s%eTests%eFixtures%eGeneratorDemo.php:%d {
505+
Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo()
506+
%A › yield 1;
507+
%A }
508+
%s%eTests%eFixtures%eGeneratorDemo.php:20 { …}
509+
%s%eTests%eFixtures%eGeneratorDemo.php:14 { …}
510+
%A }
511+
closed: false
512+
}
513+
1 => Generator {
514+
%s: {
515+
%s%eTests%eFixtures%eGeneratorDemo.php:%d {
516+
Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo()
517+
› yield 1;
518+
› }
519+
520+
}
521+
%A }
522+
closed: false
523+
}
524+
]
525+
EODUMP;
526+
527+
$r = new \ReflectionGenerator($generator);
528+
$this->assertDumpMatchesFormat($expectedDump, [$r, $r->getExecutingGenerator()]);
529+
530+
foreach ($generator as $v) {
531+
}
532+
533+
$expectedDump = <<<'EODUMP'
534+
Generator {
535+
closed: true
536+
}
537+
EODUMP;
538+
$this->assertDumpMatchesFormat($expectedDump, $generator);
539+
}
540+
541+
/**
542+
* @requires PHP 8.4
543+
*/
466544
public function testGenerator()
467545
{
468546
if (\extension_loaded('xdebug')) {
@@ -474,6 +552,7 @@ public function testGenerator()
474552

475553
$expectedDump = <<<'EODUMP'
476554
Generator {
555+
function: "Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::baz"
477556
this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …}
478557
%s: {
479558
%sGeneratorDemo.php:14 {
@@ -482,6 +561,7 @@ public function testGenerator()
482561
› yield from bar();
483562
› }
484563
}
564+
Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo->baz() {}
485565
%A}
486566
closed: false
487567
}
@@ -508,12 +588,13 @@ public function testGenerator()
508588
closed: false
509589
}
510590
1 => Generator {
591+
function: "Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo"
511592
%s: {
512593
%s%eTests%eFixtures%eGeneratorDemo.php:%d {
513594
Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo()
514595
› yield 1;
515596
› }
516-
597+
517598
}
518599
%A }
519600
closed: false
@@ -529,6 +610,7 @@ public function testGenerator()
529610

530611
$expectedDump = <<<'EODUMP'
531612
Generator {
613+
function: "Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::baz"
532614
closed: true
533615
}
534616
EODUMP;

0 commit comments

Comments
 (0)