File tree 9 files changed +34
-33
lines changed
9 files changed +34
-33
lines changed Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ impl Trait for A {
23
23
}
24
24
}
25
25
26
- struct Foo < Sized ? T > {
26
+ struct Foo < T : ? Sized > {
27
27
f : T
28
28
}
29
29
Original file line number Diff line number Diff line change 10
10
11
11
// As dst-struct.rs, but the unsized field is the only field in the struct.
12
12
13
- struct Fat < Sized ? T > {
13
+ struct Fat < T : ? Sized > {
14
14
ptr : T
15
15
}
16
16
Original file line number Diff line number Diff line change 8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- struct Fat < Sized ? T > {
11
+ struct Fat < T : ? Sized > {
12
12
f1 : int ,
13
13
f2 : & ' static str ,
14
14
ptr : T
Original file line number Diff line number Diff line change 8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- struct Fat < Sized ? T > {
11
+ struct Fat < T : ? Sized > {
12
12
f1 : int ,
13
13
f2 : & ' static str ,
14
14
ptr : T
Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ struct IndirectBlah { x: Box<IndirectTraitWithSend> }
22
22
impl TraitWithSend for IndirectBlah { }
23
23
impl IndirectTraitWithSend for IndirectBlah { }
24
24
25
- fn test_trait < Sized ? T : Send > ( ) { println ! ( "got here!" ) }
25
+ fn test_trait < T : Send + ? Sized > ( ) { println ! ( "got here!" ) }
26
26
27
27
fn main ( ) {
28
28
test_trait :: < TraitWithSend > ( ) ;
Original file line number Diff line number Diff line change 11
11
// Test that astconv doesn't forget about mutability of &mut str
12
12
13
13
fn main ( ) {
14
- fn foo < Sized ? T > ( _: & mut T ) { }
14
+ fn foo < T : ? Sized > ( _: & mut T ) { }
15
15
let _f: fn ( & mut str ) = foo;
16
16
}
Original file line number Diff line number Diff line change 16
16
use std:: kinds:: Sized ;
17
17
18
18
// Note: this must be generic for the problem to show up
19
- trait Foo < A > for Sized ? {
19
+ trait Foo < A > for ? Sized {
20
20
fn foo ( & self ) ;
21
21
}
22
22
Original file line number Diff line number Diff line change 10
10
//
11
11
// ignore-lexer-test FIXME #15879
12
12
13
- // Test syntax checks for `Sized? ` syntax.
13
+ // Test syntax checks for `?Sized ` syntax.
14
14
15
- trait T1 for Sized ? { }
16
- pub trait T2 for Sized ? { }
17
- trait T3 < X : T1 > for Sized ?: T2 { }
18
- trait T4 < Sized ? X > { }
19
- trait T5 < Sized ? X , Y > { }
20
- trait T6 < Y , Sized ? X > { }
21
- trait T7 < Sized ? X , Sized ? Y > { }
22
- trait T8 < Sized ? X : T2 > { }
23
- struct S1 < Sized ? X > ;
24
- enum E < Sized ? X > { }
25
- impl < Sized ? X > T1 for S1 < X > { }
26
- fn f < Sized ? X > ( ) { }
27
- type TT < Sized ? T > = T ;
15
+ trait T1 for ?Sized { }
16
+ pub trait T2 for ?Sized { }
17
+ trait T3 < X : T1 > for ?Sized : T2 { }
18
+ trait T4 < X : ?Sized > { }
19
+ trait T5 < X : ?Sized , Y > { }
20
+ trait T6 < Y , X : ?Sized > { }
21
+ trait T7 < X : ?Sized , Y : ?Sized > { }
22
+ trait T8 < X : ?Sized +T2 > { }
23
+ trait T9 < X : T2 + ?Sized > { }
24
+ struct S1 < X : ?Sized > ;
25
+ enum E < X : ?Sized > { }
26
+ impl < X : ?Sized > T1 for S1 < X > { }
27
+ fn f < X : ?Sized > ( ) { }
28
+ type TT < T : ?Sized > = T ;
28
29
29
30
pub fn main ( ) {
30
31
}
Original file line number Diff line number Diff line change 13
13
// Test sized-ness checking in substitution.
14
14
15
15
// Unbounded.
16
- fn f1 < Sized ? X > ( x : & X ) {
16
+ fn f1 < X : ? Sized > ( x : & X ) {
17
17
f1 :: < X > ( x) ;
18
18
}
19
19
fn f2 < X > ( x : & X ) {
@@ -22,8 +22,8 @@ fn f2<X>(x: &X) {
22
22
}
23
23
24
24
// Bounded.
25
- trait T for Sized ? { }
26
- fn f3 < Sized ? X : T > ( x : & X ) {
25
+ trait T for ? Sized { }
26
+ fn f3 < X : T +? Sized > ( x : & X ) {
27
27
f3 :: < X > ( x) ;
28
28
}
29
29
fn f4 < X : T > ( x : & X ) {
@@ -32,7 +32,7 @@ fn f4<X: T>(x: &X) {
32
32
}
33
33
34
34
// Self type.
35
- trait T2 for Sized ? {
35
+ trait T2 for ? Sized {
36
36
fn f ( ) -> Box < Self > ;
37
37
}
38
38
struct S ;
@@ -41,22 +41,22 @@ impl T2 for S {
41
41
box S
42
42
}
43
43
}
44
- fn f5 < Sized ? X : T2 > ( x : & X ) {
44
+ fn f5 < X : ? Sized + T2 > ( x : & X ) {
45
45
let _: Box < X > = T2 :: f ( ) ;
46
46
}
47
47
fn f6 < X : T2 > ( x : & X ) {
48
48
let _: Box < X > = T2 :: f ( ) ;
49
49
}
50
50
51
- trait T3 for Sized ? {
51
+ trait T3 for ? Sized {
52
52
fn f ( ) -> Box < Self > ;
53
53
}
54
54
impl T3 for S {
55
55
fn f ( ) -> Box < S > {
56
56
box S
57
57
}
58
58
}
59
- fn f7 < Sized ? X : T3 > ( x : & X ) {
59
+ fn f7 < X : ? Sized + T3 > ( x : & X ) {
60
60
// This is valid, but the unsized bound on X is irrelevant because any type
61
61
// which implements T3 must have statically known size.
62
62
let _: Box < X > = T3 :: f ( ) ;
@@ -66,7 +66,7 @@ trait T4<X> {
66
66
fn m1 ( x : & T4 < X > ) ;
67
67
fn m2 ( x : & T5 < X > ) ;
68
68
}
69
- trait T5 < Sized ? X > {
69
+ trait T5 < X : ? Sized > {
70
70
// not an error (for now)
71
71
fn m1 ( x : & T4 < X > ) ;
72
72
fn m2 ( x : & T5 < X > ) ;
@@ -76,21 +76,21 @@ trait T6<X: T> {
76
76
fn m1 ( x : & T4 < X > ) ;
77
77
fn m2 ( x : & T5 < X > ) ;
78
78
}
79
- trait T7 < Sized ? X : T > {
79
+ trait T7 < X : ? Sized + T > {
80
80
// not an error (for now)
81
81
fn m1 ( x : & T4 < X > ) ;
82
82
fn m2 ( x : & T5 < X > ) ;
83
83
}
84
84
85
85
// The last field in a struct or variant may be unsized
86
- struct S2 < Sized ? X > {
86
+ struct S2 < X : ? Sized > {
87
87
f : X ,
88
88
}
89
- struct S3 < Sized ? X > {
89
+ struct S3 < X : ? Sized > {
90
90
f1 : int ,
91
91
f2 : X ,
92
92
}
93
- enum E < Sized ? X > {
93
+ enum E < X : ? Sized > {
94
94
V1 ( X ) ,
95
95
V2 { x : X } ,
96
96
V3 ( int , X ) ,
You can’t perform that action at this time.
0 commit comments