diff options
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/obsolete.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 16 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index 3891e7b6d17..d787123bf61 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -21,7 +21,8 @@ pub enum ObsoleteSyntax { ObsoleteWith, ObsoleteClassMethod, ObsoleteClassTraits, - ObsoletePrivSection + ObsoletePrivSection, + ObsoleteModeInFnType } #[cfg(stage0)] @@ -99,6 +100,11 @@ impl parser : ObsoleteReporter { "the `priv` keyword is applied to individual items, methods, \ and fields" ), + ObsoleteModeInFnType => ( + "mode without identifier in fn type", + "to use a (deprecated) mode in a fn type, you should \ + give the argument an explicit name (like `&&v: int`)" + ), }; self.report(sp, kind, kind_str, desc); diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index a6ad5b35484..f2e7245a1d4 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -19,7 +19,8 @@ use obsolete::{ ObsoleteReporter, ObsoleteSyntax, ObsoleteLowerCaseKindBounds, ObsoleteLet, ObsoleteFieldTerminator, ObsoleteStructCtor, - ObsoleteWith, ObsoleteClassMethod, ObsoleteClassTraits + ObsoleteWith, ObsoleteClassMethod, ObsoleteClassTraits, + ObsoleteModeInFnType }; use ast::{_mod, add, alt_check, alt_exhaustive, arg, arm, attribute, bind_by_ref, bind_by_implicit_ref, bind_by_value, bind_by_move, @@ -618,6 +619,15 @@ impl parser { } else { special_idents::invalid } }; + match m { + expl(_) => { + if i == special_idents::invalid { + self.obsolete(copy self.span, ObsoleteModeInFnType); + } + } + _ => {} + } + let t = self.parse_ty(false); {mode: m, ty: t, ident: i, id: self.get_id()} @@ -1585,7 +1595,7 @@ impl parser { } fn parse_sugary_call_expr(keyword: ~str, - ctor: fn(+@expr) -> expr_) -> @expr { + ctor: fn(+v: @expr) -> expr_) -> @expr { let lo = self.last_span; // Parse the callee `foo` in // for foo || { @@ -2400,7 +2410,7 @@ impl parser { fn(parser) -> arg_or_capture_item) -> (self_ty, fn_decl, capture_clause) { - fn maybe_parse_self_ty(cnstr: fn(+mutability) -> ast::self_ty_, + fn maybe_parse_self_ty(cnstr: fn(+v: mutability) -> ast::self_ty_, p: parser) -> ast::self_ty_ { // We need to make sure it isn't a mode or a type if p.token_is_keyword(~"self", p.look_ahead(1)) || |
