mirror of
https://github.com/php/php-src.git
synced 2024-12-14 20:33:36 +08:00
d04917c7b3
I've introduced a new CompileError type, from which ParseError inherits. These errors are not parse errors in the narrow sense of the term, even though they happen to be generated during parsing in our implementation. Additionally reusing the ParseError class for this purpose would change existing error messages (if the exception is not caught) from a "Fatal error:" to a "Parse error:" prefix, and also the error kind from E_COMPILE_ERROR to E_PARSE.
25 lines
645 B
PHP
25 lines
645 B
PHP
--TEST--
|
|
Bug #75218: Change remaining uncatchable fatal errors for parsing into ParseError
|
|
--FILE--
|
|
<?php
|
|
|
|
function try_eval($code) {
|
|
try {
|
|
eval($code);
|
|
} catch (CompileError $e) {
|
|
echo $e->getMessage(), "\n";
|
|
}
|
|
}
|
|
|
|
try_eval('if (false) {class C { final final function foo($fff) {}}}');
|
|
try_eval('if (false) {class C { private protected $x; }}');
|
|
try_eval('if (true) { __HALT_COMPILER(); }');
|
|
try_eval('declare(encoding=[]);');
|
|
|
|
?>
|
|
--EXPECT--
|
|
Multiple final modifiers are not allowed
|
|
Multiple access type modifiers are not allowed
|
|
__HALT_COMPILER() can only be used from the outermost scope
|
|
Encoding must be a literal
|