--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:72}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(72)
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:17}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(17)
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.010997"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.5.1
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:72}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(72)
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:17}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(17)
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.008620"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.4.17
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:72}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(72)
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:17}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(17)
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.011963"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.4.16
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:72}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(72)
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:17}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(17)
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.012381"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.4.9
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:72}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(72)
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (3) {
["name"]=>
string(22) "{closure:/in/T8rkB:17}"
["file"]=>
string(9) "/in/T8rkB"
["line"]=>
int(17)
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.010755"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.3.30
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.011713"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.3.29
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.012437"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.3.18
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.008549"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22
Output for 8.3.5
--------------[ TESTCASE ]--------------
string(9) "no-return"
Success: without a return statement is always valid.
Created uniqueId 1
--------------[ TESTCASE ]--------------
string(15) "no-return-value"
Success: a return statement without a value is always valid.
Created uniqueId 2
--------------[ TESTCASE ]--------------
string(5) "$this"
Dubious: return $this is dubious.
- it fullfills the return type, so it could be allowed.
- but returning anything from a constructor is nonsense, because it is discarded.
As shown by the fourth testcase new SomeTypeError('no-return').
Created uniqueId 3
--------------[ TESTCASE ]--------------
object(ShouldTypeError)#4 (1) {
["uniqueId"]=>
int(0)
}
Error: why is it not a return TypeError?
Created uniqueId 4
--------------[ TESTCASE ]--------------
string(11) "Const hello"
Error: why is it not a return TypeError?
Created uniqueId 5
--------------[ TESTCASE ]--------------
string(3) "abc"
Error: why is it not a return TypeError?
Created uniqueId 6
--------------[ TESTCASE ]--------------
int(1)
Error: why is it not a return TypeError?
Created uniqueId 7
--------------[ TESTCASE ]--------------
float(1.23)
Error: why is it not a return TypeError?
Created uniqueId 8
--------------[ TESTCASE ]--------------
NULL
Error: why is it not a return TypeError?
Created uniqueId 9
--------------[ TESTCASE ]--------------
bool(true)
Success: without a return statement is always valid.
Created uniqueId 10
--------------[ TESTCASE ]--------------
bool(false)
Error: why is it not a return TypeError?
Created uniqueId 11
--------------[ TESTCASE ]--------------
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
Error: why is it not a return TypeError?
Created uniqueId 12
--------------[ TESTCASE ]--------------
array(4) {
["a"]=>
string(1) "a"
["b"]=>
string(1) "b"
["c"]=>
string(1) "c"
[0]=>
string(4) "Zero"
}
Error: why is it not a return TypeError?
Created uniqueId 13
--------------[ TESTCASE ]--------------
string(5) "never"
Success: throwable: Undefined constant "never"
--------------[ TESTCASE ]--------------
string(4) "void"
Success: throwable: Undefined constant "void"
--------------[ TESTCASE ]--------------
enum(SomeEnum::Spades)
Error: why is it not a return TypeError?
Created uniqueId 16
--------------[ TESTCASE ]--------------
object(Closure)#6 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 17
--------------[ TESTCASE ]--------------
object(Closure)#1 (0) {
}
Error: why is it not a return TypeError?
Created uniqueId 18
--------------[ TESTCASE ]--------------
object(Closure)#2 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 19
--------------[ TESTCASE ]--------------
object(Closure)#3 (1) {
["function"]=>
string(12) "SomeFunction"
}
Error: why is it not a return TypeError?
Created uniqueId 20
--------------[ TESTCASE ]--------------
object(DateTimeImmutable)#7 (3) {
["date"]=>
string(26) "2026-01-30 22:42:48.009474"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
Error: why is it not a return TypeError?
Created uniqueId 21
--------------[ TESTCASE ]--------------
resource(5) of type (stream)
Error: why is it not a return TypeError?
Created uniqueId 22