File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -2730,6 +2730,8 @@ impl<'a> Parser<'a> {
2730
2730
return self . parse_dot_or_call_expr ( ) ;
2731
2731
}
2732
2732
2733
+ let lo = self . span . lo ;
2734
+
2733
2735
self . bump ( ) ;
2734
2736
2735
2737
// Check for a place: `box(PLACE) EXPR`.
@@ -2738,6 +2740,18 @@ impl<'a> Parser<'a> {
2738
2740
if !self . eat ( & token:: RParen ) {
2739
2741
let place = self . parse_expr ( ) ;
2740
2742
self . expect ( & token:: RParen ) ;
2743
+ // Give a suggestion to use `box()` when a parenthesised expression is used
2744
+ if !self . token . can_begin_expr ( ) {
2745
+ let span = self . span ;
2746
+ let this_token_to_string = self . this_token_to_string ( ) ;
2747
+ self . span_err ( span,
2748
+ format ! ( "expected expression, found `{}`" ,
2749
+ this_token_to_string) . as_slice ( ) ) ;
2750
+ let box_span = mk_sp ( lo, self . last_span . hi ) ;
2751
+ self . span_help ( box_span,
2752
+ "perhaps you meant `box() (foo)` instead?" ) ;
2753
+ self . abort_if_errors ( ) ;
2754
+ }
2741
2755
let subexpression = self . parse_prefix_expr ( ) ;
2742
2756
hi = subexpression. span . hi ;
2743
2757
ex = ExprBox ( place, subexpression) ;
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ fn main ( ) {
12
+ box ( 1 + 1 ) //~ HELP perhaps you meant `box() (foo)` instead?
13
+ ; //~ ERROR expected expression, found `;`
14
+ }
You can’t perform that action at this time.
0 commit comments