[gjs/mozjs91: 59/64] Adapt to new Maybe-based property descriptor API
- From: Evan Welsh <ewlsh src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs/mozjs91: 59/64] Adapt to new Maybe-based property descriptor API
- Date: Sun, 11 Jul 2021 04:13:19 +0000 (UTC)
commit 6a62372b954d8bfffe18f83628b24f262cdca9a6
Author: Evan Welsh <contact evanwelsh com>
Date: Sat Jul 10 20:38:39 2021 -0700
Adapt to new Maybe-based property descriptor API
gi/gobject.cpp | 40 ++++++++++++++++++++++------------------
gjs/module.cpp | 14 +++++++++++---
2 files changed, 33 insertions(+), 21 deletions(-)
---
diff --git a/gi/gobject.cpp b/gi/gobject.cpp
index c589ce31..feaacc96 100644
--- a/gi/gobject.cpp
+++ b/gi/gobject.cpp
@@ -60,28 +60,32 @@ static bool jsobj_set_gproperty(JSContext* cx, JS::HandleObject object,
GjsAutoChar camel_name = gjs_hyphen_to_camel(pspec->name);
if (g_param_spec_get_qdata(pspec, ObjectBase::custom_property_quark())) {
- JS::Rooted<JS::PropertyDescriptor> jsprop(cx);
+ JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> jsprop(cx);
+ JS::RootedObject holder(cx);
// Ensure to call any associated setter method
if (!g_str_equal(underscore_name.get(), pspec->name)) {
- if (!JS_GetPropertyDescriptor(cx, object, underscore_name, &jsprop))
+ if (!JS_GetPropertyDescriptor(cx, object, underscore_name, &jsprop,
+ &holder))
return false;
- if (jsprop.setter() &&
- !JS_SetProperty(cx, object, underscore_name, jsvalue))
- return false;
- }
-
- if (!g_str_equal(camel_name.get(), pspec->name)) {
- if (!JS_GetPropertyDescriptor(cx, object, camel_name, &jsprop))
- return false;
- if (jsprop.setter() &&
- !JS_SetProperty(cx, object, camel_name, jsvalue))
- return false;
- }
-
- if (!JS_GetPropertyDescriptor(cx, object, pspec->name, &jsprop))
- return false;
- if (jsprop.setter() &&
+ if (jsprop.isSome() && jsprop.value().setter() &&
+ !JS_SetProperty(cx, object, underscore_name, jsvalue))
+ return false;
+ }
+
+ if (!g_str_equal(camel_name.get(), pspec->name)) {
+ if (!JS_GetPropertyDescriptor(cx, object, camel_name, &jsprop,
+ &holder))
+ return false;
+ if (jsprop.isSome() && jsprop.value().setter() &&
+ !JS_SetProperty(cx, object, camel_name, jsvalue))
+ return false;
+ }
+
+ if (!JS_GetPropertyDescriptor(cx, object, pspec->name, &jsprop,
+ &holder))
+ return false;
+ if (jsprop.isSome() && jsprop.value().setter() &&
!JS_SetProperty(cx, object, pspec->name, jsvalue))
return false;
}
diff --git a/gjs/module.cpp b/gjs/module.cpp
index cba01409..5d22d28a 100644
--- a/gjs/module.cpp
+++ b/gjs/module.cpp
@@ -202,9 +202,17 @@ class GjsScriptModule {
"please fix your code anyway.",
gjs_debug_id(id).c_str(), m_name);
- JS::Rooted<JS::PropertyDescriptor> desc(cx);
- return JS_GetPropertyDescriptorById(cx, lexical, id, &desc) &&
- JS_DefinePropertyById(cx, module, id, desc);
+ JS::Rooted<mozilla::Maybe<JS::PropertyDescriptor>> desc(cx);
+ JS::Rooted<JS::PropertyDescriptor> desc_(cx);
+ JS::RootedObject holder(cx);
+
+ if (!JS_GetPropertyDescriptorById(cx, lexical, id, &desc, &holder) ||
+ desc.isNothing())
+ return false;
+
+ desc_.set(desc.value());
+
+ return JS_DefinePropertyById(cx, module, id, desc_);
}
GJS_JSAPI_RETURN_CONVENTION
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]