eclipse-pdt / pdt

PHP Development Tools project (PDT)
https://eclipse.org/pdt
Eclipse Public License 2.0
189 stars 46 forks source link

Missing error on duplicate, invalid, or missing value of backed enum #215

Open the-liquid-metal opened 1 year ago

the-liquid-metal commented 1 year ago

Bug Description Missing error on duplicate, invalid, or missing value of backed enum.

Eclipse environment Version: 2023-06 (4.28.0) Build id: 20230608-1333 PDT: 8.0.0.202306050832

System

To Reproduce Steps to reproduce the behavior: copy-paste this script to the IDE

<?php
declare(strict_types=1);

namespace ns1\ns2;

class Test40 {}
function fn1($a) {echo $a;}
$var1 = 10;

enum Test40b: string {
    case Hearts = "H";
    case Diamonds = "D";
    case Clubs = "C";
    case Spades = "S";
    case Case1;                                // already correct error trigger
    case Case2 = "H";                          // this statement must trigger error
    case Case3 = "foo"."bar";                  // OK
    case Case4 = Test40::class;                // OK
    case Case5 = 10;                           // this statement must trigger error
    case Case6 = 10*20;                        // this statement must trigger error
    case Case7 = 10*$var1;                     // this statement must trigger error
    case Case8 = [10];                         // this statement must trigger error
    case Case9 = $var1[10];                    // this statement must trigger error
    case Case10 = true;                        // this statement must trigger error
    case Case11 = null;                        // this statement must trigger error
    case Case12 = new Test40();                // this statement must trigger error
    case Case13 = new Test40("foo");           // this statement must trigger error
    case Case14 = fn($a) => $a*2;              // this statement must trigger error
    case Case15 = $var1 > 100;                 // this statement must trigger error
    case Case16 = $var1 > 100 ? "foo" : "bar"; // this statement must trigger error
    case Case17 = $var1 ?? "foo";              // this statement must trigger error
    case Case18 = match ($var1) {              // this statement must trigger error
        10 => "foo",
        20 => "bar",
        30 => "baz",
    };
}