[php-src] Issue #7925: Enum comparison resuls sometimes incorrect

From: Date: Mon, 10 Jan 2022 19:54:36 +0000
Subject: [php-src] Issue #7925: Enum comparison resuls sometimes incorrect
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238941@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/7925 Author: berniev ### Description The following code: ```php use PHPUnit\Framework\TestCase; use function PHPUnit\Framework\assertEquals; enum EN { case one; case two; } class CC { public function __construct( public EN $fred ) { } } class EnumTest extends TestCase { protected function setUp(): void { $this->c = new CC(EN::two); } function test1() { assertEquals(EN::one === EN::one, true); } function test2() { assertEquals(! EN::one === EN::one, false); } function test3() { assertEquals(EN::one !== EN::one, false); } function test4() { assertEquals(! EN::one !== EN::one, true); } function test5() { $fred = EN::one; assertEquals($fred === EN::one, true); } function test6() { $fred = EN::one; assertEquals(! $fred === EN::one, false); } function test7() { $fred = EN::one; assertEquals($fred === EN::two, false); } function test8() { $fred = EN::one; assertEquals(! $fred === EN::two, true); } function test9() { $fred = EN::one; assertEquals($fred !== EN::two, true); } function test10() { $fred = EN::one; assertEquals(! $fred !== EN::two, false); } function test11() { assertEquals($this->c->fred === EN::one, false); } function test12() { assertEquals(! $this->c->fred === EN::one, true); } function test13() { assertEquals($this->c->fred === EN::two, true); } function test14() { assertEquals(! $this->c->fred === EN::two, false); } function test15() { assertEquals($this->c->fred !== EN::two, false); } function test16() { assertEquals(! $this->c->fred !== EN::two, true); } } <?php ``` Resulted in this output: ``` tests 8, 10 and 12 failed ``` ### PHP Version PHP 8.1.1 ### Operating System MacOS 12.1

« previous php.bugs (#238941) next »