From 99dd7ee80ba6865dfbf742935f9aadab1d65801c Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 26 Nov 2015 16:56:08 +0100 Subject: [PATCH] Forbid namespace\int type hint as well --- Zend/tests/typehints/fully_qualified_scalar.phpt | 2 +- Zend/tests/typehints/namespace_relative_scalar.phpt | 11 +++++++++++ Zend/zend_compile.c | 6 ++++-- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 Zend/tests/typehints/namespace_relative_scalar.phpt diff --git a/Zend/tests/typehints/fully_qualified_scalar.phpt b/Zend/tests/typehints/fully_qualified_scalar.phpt index fcc4360e76..d780b44dcd 100644 --- a/Zend/tests/typehints/fully_qualified_scalar.phpt +++ b/Zend/tests/typehints/fully_qualified_scalar.phpt @@ -10,4 +10,4 @@ foo(1); ?> --EXPECTF-- -Fatal error: Cannot use the scalar type 'int' as fully qualified with a leading backslash in %s on line %d +Fatal error: Scalar type declaration 'int' must be unqualified in %s on line %d diff --git a/Zend/tests/typehints/namespace_relative_scalar.phpt b/Zend/tests/typehints/namespace_relative_scalar.phpt new file mode 100644 index 0000000000..1bc91788cc --- /dev/null +++ b/Zend/tests/typehints/namespace_relative_scalar.phpt @@ -0,0 +1,11 @@ +--TEST-- +namespace\int is not a valid type hint +--FILE-- + +--EXPECTF-- +Fatal error: Scalar type declaration 'int' must be unqualified in %s on line %d diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 9805df055c..0e633b724a 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4383,8 +4383,10 @@ static void zend_compile_typename(zend_ast *ast, zend_arg_info *arg_info) /* {{{ zend_uchar type = zend_lookup_builtin_type_by_name(class_name); if (type != 0) { - if (ast->attr == ZEND_NAME_FQ) { - zend_error_noreturn(E_COMPILE_ERROR, "Cannot use the scalar type '%s' as fully qualified with a leading backslash", ZSTR_VAL(zend_string_tolower(class_name))); + if (ast->attr != ZEND_NAME_NOT_FQ) { + zend_error_noreturn(E_COMPILE_ERROR, + "Scalar type declaration '%s' must be unqualified", + ZSTR_VAL(zend_string_tolower(class_name))); } arg_info->type_hint = type; } else { -- 2.40.0