Skip to content

Commit 3d10cc1

Browse files
committed
analysis: props: Use getters and setters from gir
1 parent 0781500 commit 3d10cc1

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/analysis/properties.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,19 @@ fn analyze_property(
143143
let mut set_func_name = format!("set_{name_for_func}");
144144
let mut set_prop_name = Some(format!("set_property_{name_for_func}"));
145145

146+
let has_getter = prop.getter.as_ref().is_some_and(|getter| {
147+
obj.functions
148+
.matched(getter)
149+
.iter()
150+
.all(|f| f.status.need_generate())
151+
});
152+
let has_setter = prop.setter.as_ref().is_some_and(|setter| {
153+
obj.functions
154+
.matched(setter)
155+
.iter()
156+
.all(|f| f.status.need_generate())
157+
});
158+
146159
let mut readable = prop.readable;
147160
let mut writable = if prop.construct_only {
148161
false
@@ -219,7 +232,7 @@ fn analyze_property(
219232

220233
let (get_out_ref_mode, set_in_ref_mode, nullable) = get_property_ref_modes(env, prop);
221234

222-
let getter = if readable {
235+
let getter = if readable && !has_getter {
223236
if let Ok(rust_type) = RustType::builder(env, prop.typ)
224237
.direction(library::ParameterDirection::Out)
225238
.try_build()
@@ -249,7 +262,7 @@ fn analyze_property(
249262
None
250263
};
251264

252-
let setter = if writable {
265+
let setter = if writable && !has_setter {
253266
if let Ok(rust_type) = RustType::builder(env, prop.typ)
254267
.direction(library::ParameterDirection::In)
255268
.try_build()

0 commit comments

Comments
 (0)