Commit 82b01e22298 for php
commit 82b01e22298a49033f4c651ed60a73b7bb4986c9
Merge: ff24cc82ea0 e2fa0c9f7fe
Author: Daniel Scherzer <daniel.e.scherzer@gmail.com>
Date: Thu Oct 29 18:03:53 2026 -0700
Merge branch 'PHP-8.6'
* PHP-8.6: (24 commits)
[`%pS` migration] Use `%pS` in Zend/zend.c
[`%pS` migration] Use `%pS` in Zend/zend_weakrefs.c
[`%pS` migration] Use `%pS` in Zend/zend_vm_def.h
[`%pS` migration] Use `%pS` in Zend/zend_property_hooks.c
[`%pS` migration] Use `%pS` in Zend/zend_partial.c
[`%pS` migration] Use `%pS` in Zend/zend_operators.c
[`%pS` migration] Use `%pS` in Zend/zend_objects.c
[`%pS` migration] Use `%pS` in Zend/zend_object_handlers.c
[`%pS` migration] Use `%pS` in Zend/zend_lazy_objects.c
[`%pS` migration] Use `%pS` in Zend/zend_interfaces.c
[`%pS` migration] Use `%pS` in Zend/zend_ini.c
[`%pS` migration] Use `%pS` in Zend/zend_inheritance.c
[`%pS` migration] Use `%pS` in Zend/zend_fibers.c
[`%pS` migration] Use `%pS` in Zend/zend_execute.c
[`%pS` migration] Use `%pS` in Zend/zend_execute_API.c
[`%pS` migration] Use `%pS` in Zend/zend_exceptions.c
[`%pS` migration] Use `%pS` in Zend/zend_enum.c
[`%pS` migration] Use `%pS` in Zend/zend_constants.c
[`%pS` migration] Use `%pS` in Zend/zend_compile.c
[`%pS` migration] Use `%pS` in Zend/zend_closures.c
...
diff --cc Zend/zend_compile.c
index 5d69ebb6556,8b5f0251701..f71a245526a
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@@ -7799,12 -7752,11 +7799,12 @@@ static zend_type zend_compile_single_ty
if (type_code != 0) {
if ((ast->attr & ZEND_NAME_NOT_FQ) != ZEND_NAME_NOT_FQ) {
zend_error_noreturn(E_COMPILE_ERROR,
- "Type declaration '%s' must be unqualified",
- ZSTR_VAL(zend_string_tolower(type_name)));
+ "Type declaration '%pS' must be unqualified",
+ zend_string_tolower(type_name));
}
- ZEND_ASSERT(type_code != IS_STATIC && "unqualified static type should have been handled by ZEND_AST_TYPE branch");
+ ZEND_ASSERT(type_code != IS_STATIC && type_code != IS_ARRAY && type_code != IS_CALLABLE
+ && "unqualified array/callable/static type should have been handled by ZEND_AST_TYPE branch");
/* Transform iterable into a type union alias */
if (type_code == IS_ITERABLE) {
diff --cc Zend/zend_enum.c
index 84955c27f64,a9b922a8f31..8391b32ce19
--- a/Zend/zend_enum.c
+++ b/Zend/zend_enum.c
@@@ -134,30 -134,36 +134,30 @@@ void zend_verify_enum(const zend_class_
zend_verify_enum_interfaces(ce);
}
-static int zend_implement_unit_enum(zend_class_entry *interface, zend_class_entry *class_type)
+static void zend_implement_unit_enum(zend_class_entry *interface, zend_class_entry *class_type)
{
if (class_type->ce_flags & ZEND_ACC_ENUM) {
- return SUCCESS;
+ return;
}
- zend_error_noreturn(E_ERROR, "Non-enum class %s cannot implement interface %s",
- ZSTR_VAL(class_type->name),
- ZSTR_VAL(interface->name));
+ zend_error_noreturn(E_ERROR, "Non-enum class %pS cannot implement interface %pS",
+ class_type->name,
+ interface->name);
-
- return FAILURE;
}
-static int zend_implement_backed_enum(zend_class_entry *interface, zend_class_entry *class_type)
+static void zend_implement_backed_enum(zend_class_entry *interface, zend_class_entry *class_type)
{
if (!(class_type->ce_flags & ZEND_ACC_ENUM)) {
- zend_error_noreturn(E_ERROR, "Non-enum class %s cannot implement interface %s",
- ZSTR_VAL(class_type->name),
- ZSTR_VAL(interface->name));
+ zend_error_noreturn(E_ERROR, "Non-enum class %pS cannot implement interface %pS",
+ class_type->name,
+ interface->name);
- return FAILURE;
}
if (class_type->enum_backing_type == IS_UNDEF) {
- zend_error_noreturn(E_ERROR, "Non-backed enum %s cannot implement interface %s",
- ZSTR_VAL(class_type->name),
- ZSTR_VAL(interface->name));
+ zend_error_noreturn(E_ERROR, "Non-backed enum %pS cannot implement interface %pS",
+ class_type->name,
+ interface->name);
- return FAILURE;
}
-
- return SUCCESS;
}
void zend_register_enum_ce(void)
diff --cc Zend/zend_exceptions.c
index 7f636430afb,c123f44db95..71b0db03a76
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@@ -78,11 -78,12 +78,11 @@@ static void zend_implement_throwable(ze
zend_error_noreturn(E_ERROR,
can_extend
- ? "%s %s cannot implement interface %s, extend Exception or Error instead"
- : "%s %s cannot implement interface %s",
+ ? "%s %pS cannot implement interface %pS, extend Exception or Error instead"
+ : "%s %pS cannot implement interface %pS",
zend_get_object_type_uc(class_type),
- ZSTR_VAL(class_type->name),
- ZSTR_VAL(interface->name));
+ class_type->name,
+ interface->name);
- return FAILURE;
}
/* }}} */
diff --cc Zend/zend_execute_API.c
index 7293651bbc4,b9e992ff8a0..7c836c77dca
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@@ -868,14 -868,16 +868,14 @@@ zend_result zend_call_function(zend_fca
}
if (!zend_is_callable_ex(&fci->function_name, fci->object, 0, NULL, fci_cache, &error)) {
+ ZEND_ASSERT(error && "Should have error if not callable");
if (EG(exception)) {
- if (error) {
- efree(error);
- }
+ efree(error);
return SUCCESS;
}
- ZEND_ASSERT(error && "Should have error if not callable");
zend_string *callable_name
= zend_get_callable_name_ex(&fci->function_name, fci->object);
- zend_throw_error(NULL, "Invalid callback %s, %s", ZSTR_VAL(callable_name), error);
+ zend_throw_error(NULL, "Invalid callback %pS, %s", callable_name, error);
efree(error);
zend_string_release_ex(callable_name, 0);
return SUCCESS;
diff --cc Zend/zend_inheritance.c
index 375acc45d6a,ba9d2387201..4f78fb6b10d
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@@ -1779,13 -1779,13 +1779,13 @@@ ZEND_API void zend_verify_hooked_proper
}
}
-ZEND_API ZEND_COLD ZEND_NORETURN void zend_hooked_property_variance_error_ex(zend_string *value_param_name, zend_string *class_name, zend_string *prop_name)
+ZEND_NORETURN ZEND_API ZEND_COLD void zend_hooked_property_variance_error_ex(zend_string *value_param_name, zend_string *class_name, zend_string *prop_name)
{
- zend_error_noreturn(E_COMPILE_ERROR, "Type of parameter $%s of hook %s::$%s::set must be compatible with property type",
- ZSTR_VAL(value_param_name), ZSTR_VAL(class_name), zend_get_unmangled_property_name(prop_name));
+ zend_error_noreturn(E_COMPILE_ERROR, "Type of parameter $%pS of hook %pS::$%s::set must be compatible with property type",
+ value_param_name, class_name, zend_get_unmangled_property_name(prop_name));
}
-ZEND_API ZEND_COLD ZEND_NORETURN void zend_hooked_property_variance_error(const zend_property_info *prop_info)
+ZEND_NORETURN ZEND_API ZEND_COLD void zend_hooked_property_variance_error(const zend_property_info *prop_info)
{
zend_string *value_param_name = prop_info->hooks[ZEND_PROPERTY_HOOK_SET]->op_array.arg_info[0].name;
zend_hooked_property_variance_error_ex(value_param_name, prop_info->ce->name, prop_info->name);
diff --cc Zend/zend_interfaces.c
index cd12f3dbea0,109766e4f09..b93b8f223b5
--- a/Zend/zend_interfaces.c
+++ b/Zend/zend_interfaces.c
@@@ -273,12 -273,13 +273,12 @@@ static void zend_implement_traversable(
}
}
}
- zend_error_noreturn(E_CORE_ERROR, "%s %s must implement interface %s as part of either %s or %s",
+ zend_error_noreturn(E_CORE_ERROR, "%s %pS must implement interface %pS as part of either %pS or %pS",
zend_get_object_type_uc(class_type),
- ZSTR_VAL(class_type->name),
- ZSTR_VAL(zend_ce_traversable->name),
- ZSTR_VAL(zend_ce_iterator->name),
- ZSTR_VAL(zend_ce_aggregate->name));
+ class_type->name,
+ zend_ce_traversable->name,
+ zend_ce_iterator->name,
+ zend_ce_aggregate->name);
- return FAILURE;
}
/* }}} */
@@@ -470,12 -475,13 +470,12 @@@ static void zend_implement_serializable
}
if (!(class_type->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)
&& (!class_type->__serialize || !class_type->__unserialize)) {
- zend_error(E_DEPRECATED, "%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)", ZSTR_VAL(class_type->name));
+ zend_error(E_DEPRECATED, "%pS implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)", class_type->name);
if (EG(exception)) {
zend_exception_uncaught_error(
- "During inheritance of %s, while implementing Serializable", ZSTR_VAL(class_type->name));
+ "During inheritance of %pS, while implementing Serializable", class_type->name);
}
}
- return SUCCESS;
}
/* }}}*/
diff --cc Zend/zend_lazy_objects.c
index 17f2f3a344c,2494418a164..e8443c039d4
--- a/Zend/zend_lazy_objects.c
+++ b/Zend/zend_lazy_objects.c
@@@ -248,10 -252,10 +248,10 @@@ ZEND_API zend_object *zend_object_make_
return NULL;
}
- for (zend_class_entry *parent = reflection_ce->parent; parent; parent = parent->parent) {
+ for (const zend_class_entry *parent = reflection_ce->parent; parent; parent = parent->parent) {
if (UNEXPECTED(parent->type == ZEND_INTERNAL_CLASS && parent != zend_standard_class_def)) {
- zend_throw_error(NULL, "Cannot make instance of internal class lazy: %s inherits internal class %s",
- ZSTR_VAL(reflection_ce->name), ZSTR_VAL(parent->name));
+ zend_throw_error(NULL, "Cannot make instance of internal class lazy: %pS inherits internal class %pS",
+ reflection_ce->name, parent->name);
return NULL;
}
}
diff --cc Zend/zend_vm_execute.h
index 1211ab89851,59891e70d9a..6d32bed15ac
Binary files differ