advance deprecation of v8::ReturnValue<void>::Set(Local<S>).

7168624: [runtime][api] Relax requirements for setter/definer/deleter callbacks | https://chromium-review.googlesource.com/c/v8/v8/+/7168624
This commit is contained in:
John Kleinschmidt
2025-12-01 10:35:43 -05:00
parent d09e7d4e2b
commit ece18acced
2 changed files with 38 additions and 0 deletions

View File

@@ -6,3 +6,4 @@ fix_remove_deprecated_propertycallbackinfo_holder.patch
fix_deprecation_of_v8_context_and_v8_object_api_methods.patch
remove_accesscontrol_enum_for_v8_14_4_59.patch
chore_add_yarnrc_yml_and_yarn_lock_file_to_use_yarn_v4.patch
chore_handle_deprecation_of_v8_returnvalue_void_set_local_s.patch

View File

@@ -0,0 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: John Kleinschmidt <jkleinsc@electronjs.org>
Date: Mon, 1 Dec 2025 10:27:23 -0500
Subject: chore: handle deprecation of v8::ReturnValue<void>::Set(Local<S>)
v8::ReturnValue<void>::Set(Local<S>) is now deprecated.
See http://crbug.com/348660658 for details.
diff --git a/nan_callbacks_12_inl.h b/nan_callbacks_12_inl.h
index e40383c095ab329b2e20b7e68ade507788a79fb6..9688e933a7d8e31629b507def483024ba7705b26 100644
--- a/nan_callbacks_12_inl.h
+++ b/nan_callbacks_12_inl.h
@@ -26,7 +26,23 @@ class ReturnValue {
// Handle setters
template <typename S> inline void Set(const v8::Local<S> &handle) {
TYPE_CHECK(T, S);
+#if defined(V8_MAJOR_VERSION) && defined(V8_MINOR_VERSION) && defined(V8_BUILD_NUMBER) && \
+ (V8_MAJOR_VERSION > 14 || \
+ (V8_MAJOR_VERSION == 14 && V8_MINOR_VERSION > 4) || \
+ (V8_MAJOR_VERSION == 14 && V8_MINOR_VERSION == 4 && V8_BUILD_NUMBER >= 230))
+ // For V8 14.4.230+, avoid deprecated Set method for ReturnValue<void>
+ if constexpr (std::is_void_v<T>) {
+ if (handle.IsEmpty()) {
+ value_.SetDefaultValue();
+ } else {
+ value_.Set(handle->BooleanValue(value_.GetIsolate()));
+ }
+ } else {
+ value_.Set(handle);
+ }
+#else
value_.Set(handle);
+#endif
}
template <typename S> inline void Set(const Global<S> &handle) {