File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed
Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff 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 ) => {
Original file line number Diff line number Diff 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+ }
You can’t perform that action at this time.
0 commit comments