@@ -28,6 +28,7 @@ pub enum ObsoleteSyntax {
2828 ProcExpr ,
2929 ClosureType ,
3030 ClosureKind ,
31+ EmptyIndex ,
3132}
3233
3334pub trait ParserObsoleteMethods {
@@ -48,35 +49,46 @@ pub trait ParserObsoleteMethods {
4849impl < ' a > ParserObsoleteMethods for parser:: Parser < ' a > {
4950 /// Reports an obsolete syntax non-fatal error.
5051 fn obsolete ( & mut self , sp : Span , kind : ObsoleteSyntax ) {
51- let ( kind_str, desc) = match kind {
52+ let ( kind_str, desc, error ) = match kind {
5253 ObsoleteSyntax :: ForSized => (
5354 "for Sized?" ,
5455 "no longer required. Traits (and their `Self` type) do not have the `Sized` bound \
5556 by default",
57+ true ,
5658 ) ,
5759 ObsoleteSyntax :: ProcType => (
5860 "the `proc` type" ,
5961 "use unboxed closures instead" ,
62+ true ,
6063 ) ,
6164 ObsoleteSyntax :: ProcExpr => (
6265 "`proc` expression" ,
6366 "use a `move ||` expression instead" ,
67+ true ,
6468 ) ,
6569 ObsoleteSyntax :: ClosureType => (
6670 "`|usize| -> bool` closure type" ,
6771 "use unboxed closures instead, no type annotation needed"
72+ true,
6873 ) ,
6974 ObsoleteSyntax :: ClosureKind => (
7075 "`:`, `&mut:`, or `&:`" ,
7176 "rely on inference instead"
77+ true,
7278 ) ,
7379 ObsoleteSyntax :: Sized => (
7480 "`Sized? T` for removing the `Sized` bound" ,
7581 "write `T: ?Sized` instead"
82+ true,
83+ ) ,
84+ ObsoleteSyntax :: EmptyIndex => (
85+ "[]" ,
86+ "write `[..]` instead" ,
87+ false , // warning for now
7688 ) ,
7789 } ;
7890
79- self . report ( sp, kind, kind_str, desc) ;
91+ self . report ( sp, kind, kind_str, desc, error ) ;
8092 }
8193
8294 /// Reports an obsolete syntax non-fatal error, and returns
@@ -90,9 +102,13 @@ impl<'a> ParserObsoleteMethods for parser::Parser<'a> {
90102 sp : Span ,
91103 kind : ObsoleteSyntax ,
92104 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+ }
96112
97113 if !self . obsolete_set . contains ( & kind) {
98114 self . sess
0 commit comments