diff options
Diffstat (limited to 'src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs')
-rw-r--r-- | src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs b/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs deleted file mode 100644 index a8f7a41c4..000000000 --- a/src/test/ui/regions/issue-56537-closure-uses-region-from-container.rs +++ /dev/null @@ -1,67 +0,0 @@ -// This is a collection of examples where a function's formal -// parameter has an explicit lifetime and a closure within that -// function returns that formal parameter. The closure's return type, -// to be correctly inferred, needs to include the lifetime introduced -// by the function. -// -// This works today, which precludes changing things so that closures -// follow the same lifetime-elision rules used elsewhere. See -// rust-lang/rust#56537 - -// check-pass - -fn willy_no_annot<'w>(p: &'w str, q: &str) -> &'w str { - let free_dumb = |_x| { p }; // no type annotation at all - let hello = format!("Hello"); - free_dumb(&hello) -} - -fn willy_ret_type_annot<'w>(p: &'w str, q: &str) -> &'w str { - let free_dumb = |_x| -> &str { p }; // type annotation on the return type - let hello = format!("Hello"); - free_dumb(&hello) -} - -fn willy_ret_region_annot<'w>(p: &'w str, q: &str) -> &'w str { - let free_dumb = |_x| -> &'w str { p }; // type+region annotation on return type - let hello = format!("Hello"); - free_dumb(&hello) -} - -fn willy_arg_type_ret_type_annot<'w>(p: &'w str, q: &str) -> &'w str { - let free_dumb = |_x: &str| -> &str { p }; // type annotation on arg and return types - let hello = format!("Hello"); - free_dumb(&hello) -} - -fn willy_arg_type_ret_region_annot<'w>(p: &'w str, q: &str) -> &'w str { - let free_dumb = |_x: &str| -> &'w str { p }; // fully annotated - let hello = format!("Hello"); - free_dumb(&hello) -} - -fn main() { - let world = format!("World"); - let w1: &str = { - let hello = format!("He11o"); - willy_no_annot(&world, &hello) - }; - let w2: &str = { - let hello = format!("He22o"); - willy_ret_type_annot(&world, &hello) - }; - let w3: &str = { - let hello = format!("He33o"); - willy_ret_region_annot(&world, &hello) - }; - let w4: &str = { - let hello = format!("He44o"); - willy_arg_type_ret_type_annot(&world, &hello) - }; - let w5: &str = { - let hello = format!("He55o"); - willy_arg_type_ret_region_annot(&world, &hello) - }; - assert_eq!((w1, w2, w3, w4, w5), - ("World","World","World","World","World")); -} |