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}) {{
195
195
)
196
196
}
197
197
( BorrowKind :: Weak , Some ( WrapperKind :: DefaultReturn ( ref r) ) ) => {
198
+ let not_unit_ret = r. chars ( ) . any ( |c| c != '(' && c != ')' && c != ' ' ) ;
198
199
format ! (
199
200
"\
200
201
let {0} = match {1}::clone::Upgrade::upgrade(&{0}) {{
@@ -210,7 +211,7 @@ let {0} = match {1}::clone::Upgrade::upgrade(&{0}) {{
210
211
}};" ,
211
212
name,
212
213
crate_ident_new( ) ,
213
- r ,
214
+ if not_unit_ret { r } else { "" } ,
214
215
)
215
216
}
216
217
( BorrowKind :: Weak , None ) => {
Original file line number Diff line number Diff line change @@ -267,3 +267,24 @@ fn clone_failures() {
267
267
t. compile_fail_inline_check_sub ( & format ! ( "test_{index}" ) , & output, err) ;
268
268
}
269
269
}
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