Skip to content

Commit 7847a00

Browse files
committed
Make backing type mismatch a type error
1 parent 264eb0d commit 7847a00

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

Zend/tests/enum/backed-mismatch.phpt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,30 @@ enum Foo: int {
1010
try {
1111
var_dump(Foo::Bar);
1212
} catch (Error $e) {
13-
echo $e->getMessage(), "\n";
13+
echo get_class($e), ': ', $e->getMessage(), "\n";
1414
}
1515

1616
try {
1717
var_dump(Foo::Bar);
1818
} catch (Error $e) {
19-
echo $e->getMessage(), "\n";
19+
echo get_class($e), ': ', $e->getMessage(), "\n";
2020
}
2121

2222
try {
2323
var_dump(Foo::from(42));
2424
} catch (Error $e) {
25-
echo $e->getMessage(), "\n";
25+
echo get_class($e), ': ', $e->getMessage(), "\n";
2626
}
2727

2828
try {
2929
var_dump(Foo::from('bar'));
3030
} catch (Error $e) {
31-
echo $e->getMessage(), "\n";
31+
echo get_class($e), ': ', $e->getMessage(), "\n";
3232
}
3333

3434
?>
3535
--EXPECT--
36-
Enum case type string does not match enum backing type int
37-
Enum case type string does not match enum backing type int
38-
Enum case type string does not match enum backing type int
39-
Foo::from(): Argument #1 ($value) must be of type int, string given
36+
TypeError: Enum case type string does not match enum backing type int
37+
TypeError: Enum case type string does not match enum backing type int
38+
TypeError: Enum case type string does not match enum backing type int
39+
TypeError: Foo::from(): Argument #1 ($value) must be of type int, string given

Zend/zend_enum.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce)
210210
zval *case_value = zend_enum_fetch_case_value(Z_OBJ_P(c_value));
211211

212212
if (ce->enum_backing_type != Z_TYPE_P(case_value)) {
213-
zend_throw_error(NULL, "Enum case type %s does not match enum backing type %s",
213+
zend_type_error("Enum case type %s does not match enum backing type %s",
214214
zend_get_type_by_const(Z_TYPE_P(case_value)),
215215
zend_get_type_by_const(ce->enum_backing_type));
216216
goto failure;

0 commit comments

Comments
 (0)