|
1 | | -// Jest Snapshot v1, https://goo.gl/fbAQLP |
| 1 | +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing |
2 | 2 |
|
3 | 3 | exports[`anonymous.php 1`] = ` |
4 | 4 | ====================================options===================================== |
@@ -918,6 +918,31 @@ readonly class ReadOnlyCls { |
918 | 918 |
|
919 | 919 | class FinalCost { final public const FOO = 'foo'; } |
920 | 920 |
|
| 921 | +// PHP 8.3 typed class constants |
| 922 | +enum E { |
| 923 | + const string TEST = "Test1"; // E::TEST is a string |
| 924 | +} |
| 925 | +
|
| 926 | +trait T { |
| 927 | + const string TEST = E::TEST; // T::TEST is a string too |
| 928 | +} |
| 929 | +
|
| 930 | +interface I { |
| 931 | + const string TEST = E::TEST; // I::TEST is a string as well |
| 932 | +} |
| 933 | +
|
| 934 | +class Foo implements I { |
| 935 | + use T; |
| 936 | +
|
| 937 | + const string TEST = E::TEST; // Foo::TEST must also be a string |
| 938 | +} |
| 939 | +
|
| 940 | +class Bar extends Foo { |
| 941 | + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change |
| 942 | + public const int|null I = null; |
| 943 | + public const ?int J = null; |
| 944 | +} |
| 945 | +
|
921 | 946 | =====================================output===================================== |
922 | 947 | <?php |
923 | 948 |
|
@@ -1368,5 +1393,100 @@ class FinalCost |
1368 | 1393 | final public const FOO = "foo"; |
1369 | 1394 | } |
1370 | 1395 |
|
| 1396 | +// PHP 8.3 typed class constants |
| 1397 | +enum E |
| 1398 | +{ |
| 1399 | + const string TEST = "Test1"; // E::TEST is a string |
| 1400 | +} |
| 1401 | +
|
| 1402 | +trait T |
| 1403 | +{ |
| 1404 | + const string TEST = E::TEST; // T::TEST is a string too |
| 1405 | +} |
| 1406 | +
|
| 1407 | +interface I |
| 1408 | +{ |
| 1409 | + const string TEST = E::TEST; // I::TEST is a string as well |
| 1410 | +} |
| 1411 | +
|
| 1412 | +class Foo implements I |
| 1413 | +{ |
| 1414 | + use T; |
| 1415 | +
|
| 1416 | + const string TEST = E::TEST; // Foo::TEST must also be a string |
| 1417 | +} |
| 1418 | +
|
| 1419 | +class Bar extends Foo |
| 1420 | +{ |
| 1421 | + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change |
| 1422 | + public const int|null I = null; |
| 1423 | + public const ?int J = null; |
| 1424 | +} |
| 1425 | +
|
| 1426 | +================================================================================ |
| 1427 | +`; |
| 1428 | +
|
| 1429 | +exports[`typed_class_constants.php 1`] = ` |
| 1430 | +====================================options===================================== |
| 1431 | +parsers: ["php"] |
| 1432 | +printWidth: 80 |
| 1433 | + | printWidth |
| 1434 | +=====================================input====================================== |
| 1435 | +<?php |
| 1436 | +enum E { |
| 1437 | + const string TEST = "Test1"; // E::TEST is a string |
| 1438 | +} |
| 1439 | +
|
| 1440 | +trait T { |
| 1441 | + const string TEST = E::TEST; // T::TEST is a string too |
| 1442 | +} |
| 1443 | +
|
| 1444 | +interface I { |
| 1445 | + const string TEST = E::TEST; // I::TEST is a string as well |
| 1446 | +} |
| 1447 | +
|
| 1448 | +class Foo implements I { |
| 1449 | + use T; |
| 1450 | +
|
| 1451 | + const string TEST = E::TEST; // Foo::TEST must also be a string |
| 1452 | +} |
| 1453 | +
|
| 1454 | +class Bar extends Foo { |
| 1455 | + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change |
| 1456 | + public const int|null I = null; |
| 1457 | + public const ?int J = null; |
| 1458 | +} |
| 1459 | +
|
| 1460 | +=====================================output===================================== |
| 1461 | +<?php |
| 1462 | +enum E |
| 1463 | +{ |
| 1464 | + const string TEST = "Test1"; // E::TEST is a string |
| 1465 | +} |
| 1466 | +
|
| 1467 | +trait T |
| 1468 | +{ |
| 1469 | + const string TEST = E::TEST; // T::TEST is a string too |
| 1470 | +} |
| 1471 | +
|
| 1472 | +interface I |
| 1473 | +{ |
| 1474 | + const string TEST = E::TEST; // I::TEST is a string as well |
| 1475 | +} |
| 1476 | +
|
| 1477 | +class Foo implements I |
| 1478 | +{ |
| 1479 | + use T; |
| 1480 | +
|
| 1481 | + const string TEST = E::TEST; // Foo::TEST must also be a string |
| 1482 | +} |
| 1483 | +
|
| 1484 | +class Bar extends Foo |
| 1485 | +{ |
| 1486 | + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change |
| 1487 | + public const int|null I = null; |
| 1488 | + public const ?int J = null; |
| 1489 | +} |
| 1490 | +
|
1371 | 1491 | ================================================================================ |
1372 | 1492 | `; |
0 commit comments