[php-src] Issue #7925: Enum comparison resuls sometimes incorrect
| From: | berniev | 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