@@ -22,26 +22,32 @@ const SOME_EXPLICIT_CONST_STR : &'static str = "&'static str";
22
22
fn id_u8_slice ( arg : & [ u8 ] ) -> & [ u8 ] { arg }
23
23
24
24
// one with a function, argument elided
25
- static SOME_STATIC_SIMPLE_FN : & fn ( & [ u8 ] ) -> & [ u8 ] = id_u8_slice;
26
- const SOME_CONST_SIMPLE_FN : & fn ( & [ u8 ] ) -> & [ u8 ] = id_u8_slice;
25
+ static SOME_STATIC_SIMPLE_FN : & fn ( & [ u8 ] ) -> & [ u8 ] =
26
+ & ( id_u8_slice as fn ( & [ u8 ] ) -> & [ u8 ] ) ;
27
+ const SOME_CONST_SIMPLE_FN : & fn ( & [ u8 ] ) -> & [ u8 ] =
28
+ & ( id_u8_slice as fn ( & [ u8 ] ) -> & [ u8 ] ) ;
27
29
28
30
// this should be the same as without elision
29
- static SOME_STATIC_NON_ELIDED_fN : & fn <' a >( & ' a [ u8 ] ) -> & ' a [ u8 ] = id_u8_slice ;
30
- const SOME_CONST_NON_ELIDED_fN : & fn <' a >( & ' a [ u8 ] ) -> & ' a [ u8 ] = id_u8_slice ;
31
+ static SOME_STATIC_NON_ELIDED_fN : & for <' a > fn ( & ' a [ u8 ] ) -> & ' a [ u8 ] =
32
+ & ( id_u8_slice as for <' a > fn ( & ' a [ u8 ] ) -> & ' a [ u8 ] ) ;
33
+ const SOME_CONST_NON_ELIDED_fN : & for <' a > fn ( & ' a [ u8 ] ) -> & ' a [ u8 ] =
34
+ & ( id_u8_slice as for <' a > fn ( & ' a [ u8 ] ) -> & ' a [ u8 ] ) ;
31
35
32
36
// another function that elides, each to a different unbound lifetime
33
37
fn multi_args ( a : & u8 , b : & u8 , c : & u8 ) { }
34
38
35
- static SOME_STATIC_MULTI_FN : & fn ( & u8 , & u8 , & u8 ) = multi_args ;
36
- const SOME_CONST_MULTI_FN : & fn ( & u8 , & u8 , & u8 ) = multi_args ;
39
+ static SOME_STATIC_MULTI_FN : & fn ( & u8 , & u8 , & u8 ) =
40
+ & ( multi_args as fn ( & u8 , & u8 , & u8 ) ) ;
41
+ const SOME_CONST_MULTI_FN : & fn ( & u8 , & u8 , & u8 ) =
42
+ & ( multi_args as fn ( & u8 , & u8 , & u8 ) ) ;
37
43
38
44
39
45
fn main ( ) {
40
46
// make sure that the lifetime is actually elided (and not defaulted)
41
47
let x = & [ 1u8 , 2 , 3 ] ;
42
48
SOME_STATIC_SIMPLE_FN ( x) ;
43
49
SOME_CONST_SIMPLE_FN ( x) ;
44
-
50
+
45
51
// make sure this works with different lifetimes
46
52
let a = & 1 ;
47
53
{
0 commit comments