summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-03-16 18:37:01 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-03-16 18:37:01 +0100
commit4565a7f269e8ac94c8445fccc3a3639f75fe462e (patch)
tree38d0e9a1c9e4b4be1ce3af1a8e4a31976d57d00c
parent6a0b59d085c2e155fdf7c174c380fa34da60e877 (diff)
downloadphp-git-4565a7f269e8ac94c8445fccc3a3639f75fe462e.tar.gz
Fix assertion when (real) is used
And bring back a test for it...
-rw-r--r--Zend/tests/real_cast.phpt10
-rw-r--r--Zend/zend_language_scanner.l1
2 files changed, 11 insertions, 0 deletions
diff --git a/Zend/tests/real_cast.phpt b/Zend/tests/real_cast.phpt
new file mode 100644
index 0000000000..180ef79230
--- /dev/null
+++ b/Zend/tests/real_cast.phpt
@@ -0,0 +1,10 @@
+--TEST--
+The (real) cast is no longer supported
+--FILE--
+<?php
+
+var_dump((real) 42);
+
+?>
+--EXPECTF--
+Parse error: The (real) cast has been removed, use (float) instead in %s on line %d
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 285ade26df..232ccdf8be 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -1497,6 +1497,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
<ST_IN_SCRIPTING>"("{TABS_AND_SPACES}"real"{TABS_AND_SPACES}")" {
if (PARSER_MODE()) {
zend_throw_exception(zend_ce_parse_error, "The (real) cast has been removed, use (float) instead", 0);
+ RETURN_TOKEN(T_ERROR);
}
RETURN_TOKEN(T_DOUBLE_CAST);
}