@@ -28,6 +28,7 @@ pub enum ObsoleteSyntax {
28
28
ProcExpr ,
29
29
ClosureType ,
30
30
ClosureKind ,
31
+ EmptyIndex ,
31
32
}
32
33
33
34
pub trait ParserObsoleteMethods {
@@ -48,35 +49,46 @@ pub trait ParserObsoleteMethods {
48
49
impl < ' a > ParserObsoleteMethods for parser:: Parser < ' a > {
49
50
/// Reports an obsolete syntax non-fatal error.
50
51
fn obsolete ( & mut self , sp : Span , kind : ObsoleteSyntax ) {
51
- let ( kind_str, desc) = match kind {
52
+ let ( kind_str, desc, error ) = match kind {
52
53
ObsoleteSyntax :: ForSized => (
53
54
"for Sized?" ,
54
55
"no longer required. Traits (and their `Self` type) do not have the `Sized` bound \
55
56
by default",
57
+ true ,
56
58
) ,
57
59
ObsoleteSyntax :: ProcType => (
58
60
"the `proc` type" ,
59
61
"use unboxed closures instead" ,
62
+ true ,
60
63
) ,
61
64
ObsoleteSyntax :: ProcExpr => (
62
65
"`proc` expression" ,
63
66
"use a `move ||` expression instead" ,
67
+ true ,
64
68
) ,
65
69
ObsoleteSyntax :: ClosureType => (
66
70
"`|usize| -> bool` closure type" ,
67
71
"use unboxed closures instead, no type annotation needed"
72
+ true,
68
73
) ,
69
74
ObsoleteSyntax :: ClosureKind => (
70
75
"`:`, `&mut:`, or `&:`" ,
71
76
"rely on inference instead"
77
+ true,
72
78
) ,
73
79
ObsoleteSyntax :: Sized => (
74
80
"`Sized? T` for removing the `Sized` bound" ,
75
81
"write `T: ?Sized` instead"
82
+ true,
83
+ ) ,
84
+ ObsoleteSyntax :: EmptyIndex => (
85
+ "[]" ,
86
+ "write `[..]` instead" ,
87
+ false , // warning for now
76
88
) ,
77
89
} ;
78
90
79
- self . report ( sp, kind, kind_str, desc) ;
91
+ self . report ( sp, kind, kind_str, desc, error ) ;
80
92
}
81
93
82
94
/// Reports an obsolete syntax non-fatal error, and returns
@@ -90,9 +102,13 @@ impl<'a> ParserObsoleteMethods for parser::Parser<'a> {
90
102
sp : Span ,
91
103
kind : ObsoleteSyntax ,
92
104
kind_str : & str ,
93
- desc : & str ) {
94
- self . span_err ( sp,
95
- & format ! ( "obsolete syntax: {}" , kind_str) [ ] ) ;
105
+ desc : & str ,
106
+ error : bool ) {
107
+ if error {
108
+ self . span_err ( sp, & format ! ( "obsolete syntax: {}" , kind_str) [ ] ) ;
109
+ } else {
110
+ self . span_warn ( sp, & format ! ( "obsolete syntax: {}" , kind_str) [ ] ) ;
111
+ }
96
112
97
113
if !self . obsolete_set . contains ( & kind) {
98
114
self . sess
0 commit comments