@@ -71,13 +71,10 @@ fn list_(p: &mut Parser, flavor: Flavor) {
71
71
m. abandon ( p) ;
72
72
break ;
73
73
}
74
- let param = param ( p, m, flavor) ;
74
+ param ( p, m, flavor) ;
75
75
if !p. at ( ket) {
76
76
p. expect ( T ! [ , ] ) ;
77
77
}
78
- if let Variadic ( true ) = param {
79
- break ;
80
- }
81
78
}
82
79
83
80
if let Some ( m) = param_marker {
@@ -90,27 +87,24 @@ fn list_(p: &mut Parser, flavor: Flavor) {
90
87
91
88
const PARAM_FIRST : TokenSet = patterns:: PATTERN_FIRST . union ( types:: TYPE_FIRST ) ;
92
89
93
- struct Variadic ( bool ) ;
94
-
95
- fn param ( p : & mut Parser , m : Marker , flavor : Flavor ) -> Variadic {
96
- let mut res = Variadic ( false ) ;
90
+ fn param ( p : & mut Parser , m : Marker , flavor : Flavor ) {
97
91
match flavor {
98
92
// test param_list_vararg
99
- // extern "C" { fn printf(format: *const i8, ...) -> i32; }
100
- Flavor :: FnDef | Flavor :: FnPointer if p. eat ( T ! [ ...] ) => res = Variadic ( true ) ,
93
+ // extern "C" { fn printf(format: *const i8, ..., _: u8 ) -> i32; }
94
+ Flavor :: FnDef | Flavor :: FnPointer if p. eat ( T ! [ ...] ) => { }
101
95
102
96
// test fn_def_param
103
- // fn foo((x, y): (i32, i32)) {}
97
+ // fn foo(..., (x, y): (i32, i32)) {}
104
98
Flavor :: FnDef => {
105
99
patterns:: pattern ( p) ;
106
- if variadic_param ( p) {
107
- res = Variadic ( true ) ;
108
- } else if p . at ( T ! [ : ] ) {
109
- types :: ascription ( p ) ;
110
- } else {
111
- // test_err missing_fn_param_type
112
- // fn f(x y: i32, z, t: i32) {}
113
- p . error ( "missing type for function parameter" ) ;
100
+ if ! variadic_param ( p) {
101
+ if p . at ( T ! [ : ] ) {
102
+ types :: ascription ( p ) ;
103
+ } else {
104
+ // test_err missing_fn_param_type
105
+ // fn f(x y: i32, z, t: i32) {}
106
+ p . error ( "missing type for function parameter" ) ;
107
+ }
114
108
}
115
109
}
116
110
// test value_parameters_no_patterns
@@ -127,12 +121,12 @@ fn param(p: &mut Parser, m: Marker, flavor: Flavor) -> Variadic {
127
121
Flavor :: FnPointer => {
128
122
if ( p. at ( IDENT ) || p. at ( UNDERSCORE ) ) && p. nth ( 1 ) == T ! [ : ] && !p. nth_at ( 1 , T ! [ :: ] ) {
129
123
patterns:: pattern_single ( p) ;
130
- if variadic_param ( p) {
131
- res = Variadic ( true ) ;
132
- } else if p . at ( T ! [ : ] ) {
133
- types :: ascription ( p ) ;
134
- } else {
135
- p . error ( "missing type for function parameter" ) ;
124
+ if ! variadic_param ( p) {
125
+ if p . at ( T ! [ : ] ) {
126
+ types :: ascription ( p ) ;
127
+ } else {
128
+ p . error ( "missing type for function parameter" ) ;
129
+ }
136
130
}
137
131
} else {
138
132
types:: type_ ( p) ;
@@ -150,7 +144,6 @@ fn param(p: &mut Parser, m: Marker, flavor: Flavor) -> Variadic {
150
144
}
151
145
}
152
146
m. complete ( p, PARAM ) ;
153
- res
154
147
}
155
148
156
149
fn variadic_param ( p : & mut Parser ) -> bool {
0 commit comments