php-src/Zend/tests/bug75218.phpt
Nikita Popov d04917c7b3 Fixed bug #75218
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.
2018-06-16 12:41:03 +02:00

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