File tree Expand file tree Collapse file tree 2 files changed +11
-18
lines changed Expand file tree Collapse file tree 2 files changed +11
-18
lines changed Original file line number Diff line number Diff line change @@ -3174,23 +3174,16 @@ impl<'a> Parser<'a> {
3174
3174
mem:: replace ( self , parser_snapshot_before_in) ;
3175
3175
3176
3176
match self . parse_expr_res ( Restrictions :: NO_STRUCT_LITERAL , None ) {
3177
- Ok ( expr) => {
3178
- // Successfully parsed the expr, print a nice error message.
3177
+ Ok ( _) => {
3178
+ // Successfully parsed the expr which means that the 'in' keyword is
3179
+ // missing, e.g. 'for i 0..2'
3179
3180
in_err. cancel ( ) ;
3180
- let in_span = parser_snapshot_after_in. span ;
3181
+ let in_span = parser_snapshot_after_in. prev_span
3182
+ . between ( parser_snapshot_after_in. span ) ;
3181
3183
let mut err = self . sess . span_diagnostic
3182
3184
. struct_span_err ( in_span, "missing `in` in `for` loop" ) ;
3183
3185
err. span_label ( in_span, "expected `in` here" ) ;
3184
- let sugg = pprust:: to_string ( |s| {
3185
- s. s . word ( "for " ) ?;
3186
- s. print_pat ( & pat) ?;
3187
- s. s . word ( " in " ) ?;
3188
- s. print_expr ( & expr)
3189
- } ) ;
3190
- err. span_suggestion (
3191
- in_span,
3192
- "try adding `in`" ,
3193
- sugg) ;
3186
+ err. span_suggestion_short ( in_span, "try adding `in` here" , "in" . into ( ) ) ;
3194
3187
Err ( err)
3195
3188
}
3196
3189
Err ( mut expr_err) => {
Original file line number Diff line number Diff line change 1
1
error: missing `in` in `for` loop
2
- --> $DIR/issue-40782.rs:12:11
2
+ --> $DIR/issue-40782.rs:12:10
3
3
|
4
4
12 | for i 0..2 {
5
- | ^
6
- | |
7
- | expected `in` here
8
- | help: try adding `in`: `for i in 0..2`
5
+ | ^
6
+ | |
7
+ | expected `in` here
8
+ | help: try adding `in` here
9
9
10
10
error: aborting due to previous error
11
11
You can’t perform that action at this time.
0 commit comments