diff options
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/obsolete.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index 9f5a79c4f81..f5e83a1beae 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -57,6 +57,7 @@ pub enum ObsoleteSyntax { ObsoleteNewtypeEnum, ObsoleteMode, ObsoleteImplicitSelf, + ObsoleteLifetimeNotation, } impl to_bytes::IterBytes for ObsoleteSyntax { @@ -187,6 +188,11 @@ pub impl Parser { "use an explicit `self` declaration or declare the method as \ static" ), + ObsoleteLifetimeNotation => ( + "`/` lifetime notation", + "instead of `&foo/bar`, write `&'foo bar`; instead of \ + `bar/&foo`, write `&bar<'foo>" + ), }; self.report(sp, kind, kind_str, desc); diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 7b7d246c324..2ea304a0a9b 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -79,6 +79,7 @@ use parse::obsolete::{ObsoleteRecordType, ObsoleteRecordPattern}; use parse::obsolete::{ObsoleteAssertion, ObsoletePostFnTySigil}; use parse::obsolete::{ObsoleteBareFnType, ObsoleteNewtypeEnum}; use parse::obsolete::{ObsoleteMode, ObsoleteImplicitSelf}; +use parse::obsolete::{ObsoleteLifetimeNotation}; use parse::prec::{as_prec, token_to_binop}; use parse::token::{can_begin_expr, is_ident, is_ident_or_path}; use parse::token::{is_plain_ident, INTERPOLATED, special_idents}; @@ -686,6 +687,7 @@ pub impl Parser { self.token_is_closure_keyword(&self.look_ahead(2u)) { let lifetime = @self.parse_lifetime(); + self.obsolete(*self.last_span, ObsoleteLifetimeNotation); return self.parse_ty_closure(sigil, Some(lifetime)); } else if self.token_is_closure_keyword(© *self.token) { return self.parse_ty_closure(sigil, None); @@ -963,6 +965,7 @@ pub impl Parser { // Also accept the (obsolete) syntax `foo/` token::IDENT(*) => { if self.look_ahead(1u) == token::BINOP(token::SLASH) { + self.obsolete(*self.last_span, ObsoleteLifetimeNotation); Some(@self.parse_lifetime()) } else { None @@ -997,6 +1000,7 @@ pub impl Parser { let span = copy self.span; self.bump(); self.expect(&token::BINOP(token::SLASH)); + self.obsolete(*self.last_span, ObsoleteLifetimeNotation); return ast::Lifetime { id: self.get_id(), span: *span, @@ -3653,6 +3657,7 @@ pub impl Parser { fn parse_region_param(&self) { if self.eat(&token::BINOP(token::SLASH)) { + self.obsolete(*self.last_span, ObsoleteLifetimeNotation); self.expect(&token::BINOP(token::AND)); } } |
