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