constant_expressions_coalesce.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. --TEST--
  2. Constant expressions with null coalescing operator ??
  3. --FILE--
  4. <?php
  5. const A = [1 => [[]]];
  6. const T_1 = null ?? A[1]['undefined']['index'] ?? 1;
  7. const T_2 = null ?? A['undefined']['index'] ?? 2;
  8. const T_3 = null ?? A[1][0][2] ?? 3;
  9. const T_4 = A[1][0][2] ?? 4;
  10. const T_5 = null ?? __LINE__;
  11. const T_6 = __LINE__ ?? "bar";
  12. var_dump(T_1);
  13. var_dump(T_2);
  14. var_dump(T_3);
  15. var_dump(T_4);
  16. var_dump(T_5);
  17. var_dump(T_6);
  18. var_dump((function(){ static $var = null ?? A[1]['undefined']['index'] ?? 1; return $var; })());
  19. var_dump((function(){ static $var = null ?? A['undefined']['index'] ?? 2; return $var; })());
  20. var_dump((function(){ static $var = null ?? A[1][0][2] ?? 3; return $var; })());
  21. var_dump((function(){ static $var = A[1][0][2] ?? 4; return $var; })());
  22. var_dump((new class { public $var = null ?? A[1]['undefined']['index'] ?? 1; })->var);
  23. var_dump((new class { public $var = null ?? A['undefined']['index'] ?? 2; })->var);
  24. var_dump((new class { public $var = null ?? A[1][0][2] ?? 3; })->var);
  25. var_dump((new class { public $var = A[1][0][2] ?? 4; })->var);
  26. ?>
  27. --EXPECTF--
  28. int(1)
  29. int(2)
  30. int(3)
  31. int(4)
  32. int(%d)
  33. int(%d)
  34. int(1)
  35. int(2)
  36. int(3)
  37. int(4)
  38. int(1)
  39. int(2)
  40. int(3)
  41. int(4)