diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-03-12 19:32:14 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-03-13 20:07:10 -0700 |
| commit | 8fa66e8e07ca565119de195ceefb20cff50ae1ea (patch) | |
| tree | f9ae9910b40b04ae62daff56b8de1ae002765d2e /src/libsyntax/parse | |
| parent | a410652bc953137c8d579f218c2e3e68a9ef8c1c (diff) | |
| download | rust-8fa66e8e07ca565119de195ceefb20cff50ae1ea.tar.gz rust-8fa66e8e07ca565119de195ceefb20cff50ae1ea.zip | |
librustc: Remove implicit self from the language, except for old-style drop blocks.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/obsolete.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index 2ade0810dea..9f5a79c4f81 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -56,6 +56,7 @@ pub enum ObsoleteSyntax { ObsoleteBareFnType, ObsoleteNewtypeEnum, ObsoleteMode, + ObsoleteImplicitSelf, } impl to_bytes::IterBytes for ObsoleteSyntax { @@ -181,6 +182,11 @@ pub impl Parser { "obsolete argument mode", "replace `-` or `++` mode with `+`" ), + ObsoleteImplicitSelf => ( + "implicit self", + "use an explicit `self` declaration or declare the method as \ + static" + ), }; self.report(sp, kind, kind_str, desc); diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 0f06976249b..815a8bfab5d 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -78,7 +78,7 @@ use parse::obsolete::{ObsoleteMutVector, ObsoleteTraitImplVisibility}; use parse::obsolete::{ObsoleteRecordType, ObsoleteRecordPattern}; use parse::obsolete::{ObsoleteAssertion, ObsoletePostFnTySigil}; use parse::obsolete::{ObsoleteBareFnType, ObsoleteNewtypeEnum}; -use parse::obsolete::{ObsoleteMode}; +use parse::obsolete::{ObsoleteMode, ObsoleteImplicitSelf}; 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}; @@ -471,6 +471,10 @@ pub impl Parser { // XXX: Wrong. Shouldn't allow both static and self_ty let self_ty = if is_static { static_sty } else { self_ty }; + if self_ty.node == sty_by_ref { + self.obsolete(self_ty.span, ObsoleteImplicitSelf); + } + let hi = p.last_span.hi; debug!("parse_trait_methods(): trait method signature ends in \ `%s`", @@ -2981,6 +2985,10 @@ pub impl Parser { // XXX: interaction between staticness, self_ty is broken now let self_ty = if is_static { static_sty} else { self_ty }; + if self_ty.node == sty_by_ref { + self.obsolete(self_ty.span, ObsoleteImplicitSelf); + } + let (inner_attrs, body) = self.parse_inner_attrs_and_block(true); let hi = body.span.hi; let attrs = vec::append(attrs, inner_attrs); |
