summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/typehints/fully_qualified_scalar.phpt2
-rw-r--r--Zend/tests/typehints/namespace_relative_scalar.phpt11
-rw-r--r--Zend/zend_compile.c6
3 files changed, 16 insertions, 3 deletions
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--
+<?php
+
+function test(namespace\int $i) {}
+test(0);
+
+?>
+--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 {