From bc475ada134af6bf9530ffbcda494ed6f37a3c98 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 9 Aug 2025 20:59:30 +0200 Subject: [PATCH] Fix non-canonical casts They may be deprecated, but they should still produce the correct type... --- Zend/tests/type_casts/non_canonical_binary_cast.phpt | 2 +- Zend/tests/type_casts/non_canonical_boolean_cast.phpt | 2 +- Zend/tests/type_casts/non_canonical_double_cast.phpt | 2 +- Zend/zend_language_scanner.l | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Zend/tests/type_casts/non_canonical_binary_cast.phpt b/Zend/tests/type_casts/non_canonical_binary_cast.phpt index 2a24ef5f721..fc7aa59ac90 100644 --- a/Zend/tests/type_casts/non_canonical_binary_cast.phpt +++ b/Zend/tests/type_casts/non_canonical_binary_cast.phpt @@ -8,4 +8,4 @@ var_dump((binary) 42); ?> --EXPECTF-- Deprecated: Non-canonical cast (binary) is deprecated, use the (string) cast instead in %s on line %d -int(42) +string(2) "42" diff --git a/Zend/tests/type_casts/non_canonical_boolean_cast.phpt b/Zend/tests/type_casts/non_canonical_boolean_cast.phpt index 4d549a93ea0..e0db0eec475 100644 --- a/Zend/tests/type_casts/non_canonical_boolean_cast.phpt +++ b/Zend/tests/type_casts/non_canonical_boolean_cast.phpt @@ -8,4 +8,4 @@ var_dump((boolean) 42); ?> --EXPECTF-- Deprecated: Non-canonical cast (boolean) is deprecated, use the (bool) cast instead in %s on line %d -int(42) +bool(true) diff --git a/Zend/tests/type_casts/non_canonical_double_cast.phpt b/Zend/tests/type_casts/non_canonical_double_cast.phpt index 043517cd1be..91769a206a4 100644 --- a/Zend/tests/type_casts/non_canonical_double_cast.phpt +++ b/Zend/tests/type_casts/non_canonical_double_cast.phpt @@ -8,4 +8,4 @@ var_dump((double) 42); ?> --EXPECTF-- Deprecated: Non-canonical cast (double) is deprecated, use the (float) cast instead in %s on line %d -int(42) +float(42) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 7bbfd2b34e7..d298ae8b9ea 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1648,7 +1648,7 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_ if (PARSER_MODE()) { zend_error(E_DEPRECATED, "Non-canonical cast (double) is deprecated, use the (float) cast instead"); } - RETURN_TOKEN(T_INT_CAST); + RETURN_TOKEN(T_DOUBLE_CAST); } "("{TABS_AND_SPACES}"real"{TABS_AND_SPACES}")" { @@ -1667,7 +1667,7 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_ if (PARSER_MODE()) { zend_error(E_DEPRECATED, "Non-canonical cast (binary) is deprecated, use the (string) cast instead"); } - RETURN_TOKEN(T_INT_CAST); + RETURN_TOKEN(T_STRING_CAST); } "("{TABS_AND_SPACES}"array"{TABS_AND_SPACES}")" { @@ -1686,7 +1686,7 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_ if (PARSER_MODE()) { zend_error(E_DEPRECATED, "Non-canonical cast (boolean) is deprecated, use the (bool) cast instead"); } - RETURN_TOKEN(T_INT_CAST); + RETURN_TOKEN(T_BOOL_CAST); } "("{TABS_AND_SPACES}("unset"){TABS_AND_SPACES}")" {