Skip to content

Commit 11a9402

Browse files
GuillaumeGomezbilelmoussaoui
authored andcommitted
Don't generate unit tuple in clone macro as default-return value
1 parent ed849fd commit 11a9402

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

glib-macros/src/clone.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ let {0} = match {1}::clone::Upgrade::upgrade(&{0}) {{
195195
)
196196
}
197197
(BorrowKind::Weak, Some(WrapperKind::DefaultReturn(ref r))) => {
198+
let not_unit_ret = r.chars().any(|c| c != '(' && c != ')' && c != ' ');
198199
format!(
199200
"\
200201
let {0} = match {1}::clone::Upgrade::upgrade(&{0}) {{
@@ -210,7 +211,7 @@ let {0} = match {1}::clone::Upgrade::upgrade(&{0}) {{
210211
}};",
211212
name,
212213
crate_ident_new(),
213-
r,
214+
if not_unit_ret { r } else { "" },
214215
)
215216
}
216217
(BorrowKind::Weak, None) => {

glib-macros/tests/clone.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,3 +267,24 @@ fn clone_failures() {
267267
t.compile_fail_inline_check_sub(&format!("test_{index}"), &output, err);
268268
}
269269
}
270+
271+
const NO_WARNING: &[&str] = &[
272+
"clone!(@weak v => @default-return (), move || println!(\"{}\", v);)",
273+
"clone!(@weak v => @default-return (()), move || println!(\"{}\", v);)",
274+
"clone!(@weak v => @default-return ( () ), move || println!(\"{}\", v);)",
275+
"clone!(@weak v => @default-return ( ), move || println!(\"{}\", v);)",
276+
];
277+
278+
// Ensures that no warning are emitted if the default-return is a unit tuple.
279+
#[test]
280+
fn clone_unit_tuple_return() {
281+
let t = trybuild2::TestCases::new();
282+
283+
for (index, expr) in NO_WARNING.iter().enumerate() {
284+
let prefix = "fn main() { use glib::clone; let v = std::rc::Rc::new(1); ";
285+
let suffix = "; }";
286+
let output = format!("{prefix}{expr}{suffix}");
287+
288+
t.pass_inline(&format!("test_{index}"), &output);
289+
}
290+
}

0 commit comments

Comments
 (0)