Skip to content

Commit 0be4b9b

Browse files
committed
rollup merge of #21088: aochagavia/obsolete
Only the most recent changes (since November 2014) get a special error. Fixes #20599
2 parents e2eacd5 + b23289e commit 0be4b9b

File tree

5 files changed

+4
-226
lines changed

5 files changed

+4
-226
lines changed

src/libsyntax/parse/obsolete.rs

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ use ptr::P;
2424
pub enum ObsoleteSyntax {
2525
Sized,
2626
ForSized,
27-
OwnedType,
28-
OwnedExpr,
29-
OwnedPattern,
30-
OwnedVector,
31-
OwnedSelf,
32-
ImportRenaming,
33-
SubsliceMatch,
34-
ExternCrateRenaming,
3527
ProcType,
3628
ProcExpr,
3729
ClosureType,
@@ -69,38 +61,6 @@ impl<'a> ParserObsoleteMethods for parser::Parser<'a> {
6961
"`proc` expression",
7062
"use a `move ||` expression instead",
7163
),
72-
ObsoleteSyntax::OwnedType => (
73-
"`~` notation for owned pointers",
74-
"use `Box<T>` in `std::owned` instead"
75-
),
76-
ObsoleteSyntax::OwnedExpr => (
77-
"`~` notation for owned pointer allocation",
78-
"use the `box` operator instead of `~`"
79-
),
80-
ObsoleteSyntax::OwnedPattern => (
81-
"`~` notation for owned pointer patterns",
82-
"use the `box` operator instead of `~`"
83-
),
84-
ObsoleteSyntax::OwnedVector => (
85-
"`~[T]` is no longer a type",
86-
"use the `Vec` type instead"
87-
),
88-
ObsoleteSyntax::OwnedSelf => (
89-
"`~self` is no longer supported",
90-
"write `self: Box<Self>` instead"
91-
),
92-
ObsoleteSyntax::ImportRenaming => (
93-
"`use foo = bar` syntax",
94-
"write `use bar as foo` instead"
95-
),
96-
ObsoleteSyntax::SubsliceMatch => (
97-
"subslice match syntax",
98-
"instead of `..xs`, write `xs..` in a pattern"
99-
),
100-
ObsoleteSyntax::ExternCrateRenaming => (
101-
"`extern crate foo = bar` syntax",
102-
"write `extern crate bar as foo` instead"
103-
),
10464
ObsoleteSyntax::ClosureType => (
10565
"`|uint| -> bool` closure type syntax",
10666
"use unboxed closures instead, no type annotation needed"

src/libsyntax/parse/parser.rs

Lines changed: 4 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ use parse::attr::ParserAttr;
7171
use parse::classify;
7272
use parse::common::{SeqSep, seq_sep_none, seq_sep_trailing_allowed};
7373
use parse::lexer::{Reader, TokenAndSpan};
74-
use parse::obsolete::*;
74+
use parse::obsolete::{ParserObsoleteMethods, ObsoleteSyntax};
7575
use parse::token::{self, MatchNt, SubstNt, SpecialVarNt, InternedString};
7676
use parse::token::{keywords, special_idents, SpecialMacroVar};
7777
use parse::{new_sub_parser_from_file, ParseSess};
@@ -1404,22 +1404,6 @@ impl<'a> Parser<'a> {
14041404
MutTy { ty: t, mutbl: mutbl }
14051405
}
14061406

1407-
/// Parse [mut/const/imm] ID : TY
1408-
/// now used only by obsolete record syntax parser...
1409-
pub fn parse_ty_field(&mut self) -> TypeField {
1410-
let lo = self.span.lo;
1411-
let mutbl = self.parse_mutability();
1412-
let id = self.parse_ident();
1413-
self.expect(&token::Colon);
1414-
let ty = self.parse_ty_sum();
1415-
let hi = ty.span.hi;
1416-
ast::TypeField {
1417-
ident: id,
1418-
mt: MutTy { ty: ty, mutbl: mutbl },
1419-
span: mk_sp(lo, hi),
1420-
}
1421-
}
1422-
14231407
/// Parse optional return type [ -> TY ] in function decl
14241408
pub fn parse_ret_ty(&mut self) -> FunctionRetTy {
14251409
if self.eat(&token::RArrow) {
@@ -1506,17 +1490,6 @@ impl<'a> Parser<'a> {
15061490
} else {
15071491
TyTup(ts)
15081492
}
1509-
} else if self.token == token::Tilde {
1510-
// OWNED POINTER
1511-
self.bump();
1512-
let last_span = self.last_span;
1513-
match self.token {
1514-
token::OpenDelim(token::Bracket) => {
1515-
self.obsolete(last_span, ObsoleteSyntax::OwnedVector)
1516-
}
1517-
_ => self.obsolete(last_span, ObsoleteSyntax::OwnedType)
1518-
}
1519-
TyTup(vec![self.parse_ty()])
15201493
} else if self.check(&token::BinOp(token::Star)) {
15211494
// STAR POINTER (bare pointer?)
15221495
self.bump();
@@ -2830,20 +2803,6 @@ impl<'a> Parser<'a> {
28302803
hi = e.span.hi;
28312804
ex = ExprAddrOf(m, e);
28322805
}
2833-
token::Tilde => {
2834-
self.bump();
2835-
let last_span = self.last_span;
2836-
match self.token {
2837-
token::OpenDelim(token::Bracket) => {
2838-
self.obsolete(last_span, ObsoleteSyntax::OwnedVector)
2839-
},
2840-
_ => self.obsolete(last_span, ObsoleteSyntax::OwnedExpr)
2841-
}
2842-
2843-
let e = self.parse_prefix_expr();
2844-
hi = e.span.hi;
2845-
ex = self.mk_unary(UnUniq, e);
2846-
}
28472806
token::DotDot if !self.restrictions.contains(RESTRICTION_NO_DOTS) => {
28482807
// A range, closed above: `..expr`.
28492808
self.bump();
@@ -3249,10 +3208,6 @@ impl<'a> Parser<'a> {
32493208
span: self.span,
32503209
}));
32513210
before_slice = false;
3252-
} else {
3253-
let _ = self.parse_pat();
3254-
let span = self.span;
3255-
self.obsolete(span, ObsoleteSyntax::SubsliceMatch);
32563211
}
32573212
continue
32583213
}
@@ -3361,20 +3316,6 @@ impl<'a> Parser<'a> {
33613316
span: mk_sp(lo, hi)
33623317
})
33633318
}
3364-
token::Tilde => {
3365-
// parse ~pat
3366-
self.bump();
3367-
let sub = self.parse_pat();
3368-
pat = PatBox(sub);
3369-
let last_span = self.last_span;
3370-
hi = last_span.hi;
3371-
self.obsolete(last_span, ObsoleteSyntax::OwnedPattern);
3372-
return P(ast::Pat {
3373-
id: ast::DUMMY_NODE_ID,
3374-
node: pat,
3375-
span: mk_sp(lo, hi)
3376-
})
3377-
}
33783319
token::BinOp(token::And) | token::AndAnd => {
33793320
// parse &pat and &mut pat
33803321
let lo = self.span.lo;
@@ -4483,16 +4424,6 @@ impl<'a> Parser<'a> {
44834424
self_ident_hi = self.last_span.hi;
44844425
eself
44854426
}
4486-
token::Tilde => {
4487-
// We need to make sure it isn't a type
4488-
if self.look_ahead(1, |t| t.is_keyword(keywords::Self)) {
4489-
self.bump();
4490-
drop(self.expect_self_ident());
4491-
let last_span = self.last_span;
4492-
self.obsolete(last_span, ObsoleteSyntax::OwnedSelf)
4493-
}
4494-
SelfStatic
4495-
}
44964427
token::BinOp(token::Star) => {
44974428
// Possibly "*self" or "*mut self" -- not supported. Try to avoid
44984429
// emitting cryptic "unexpected token" errors.
@@ -4533,15 +4464,6 @@ impl<'a> Parser<'a> {
45334464
} else {
45344465
SelfValue(self_ident)
45354466
}
4536-
} else if self.token.is_mutability() &&
4537-
self.look_ahead(1, |t| *t == token::Tilde) &&
4538-
self.look_ahead(2, |t| t.is_keyword(keywords::Self)) {
4539-
mutbl_self = self.parse_mutability();
4540-
self.bump();
4541-
drop(self.expect_self_ident());
4542-
let last_span = self.last_span;
4543-
self.obsolete(last_span, ObsoleteSyntax::OwnedSelf);
4544-
SelfStatic
45454467
} else {
45464468
SelfStatic
45474469
}
@@ -5422,13 +5344,7 @@ impl<'a> Parser<'a> {
54225344
let (maybe_path, ident) = match self.token {
54235345
token::Ident(..) => {
54245346
let the_ident = self.parse_ident();
5425-
let path = if self.token == token::Eq {
5426-
self.bump();
5427-
let path = self.parse_str();
5428-
let span = self.span;
5429-
self.obsolete(span, ObsoleteSyntax::ExternCrateRenaming);
5430-
Some(path)
5431-
} else if self.eat_keyword(keywords::As) {
5347+
let path = if self.eat_keyword(keywords::As) {
54325348
// skip the ident if there is one
54335349
if self.token.is_ident() { self.bump(); }
54345350

@@ -5698,17 +5614,7 @@ impl<'a> Parser<'a> {
56985614
}
56995615
// either a view item or an item:
57005616
if self.eat_keyword(keywords::Extern) {
5701-
let next_is_mod = self.eat_keyword(keywords::Mod);
5702-
5703-
if next_is_mod || self.eat_keyword(keywords::Crate) {
5704-
if next_is_mod {
5705-
let last_span = self.last_span;
5706-
self.span_err(mk_sp(lo, last_span.hi),
5707-
&format!("`extern mod` is obsolete, use \
5708-
`extern crate` instead \
5709-
to refer to external \
5710-
crates.")[])
5711-
}
5617+
if self.eat_keyword(keywords::Crate) {
57125618
return self.parse_item_extern_crate(lo, visibility, attrs);
57135619
}
57145620

@@ -6075,35 +5981,7 @@ impl<'a> Parser<'a> {
60755981

60765982
let first_ident = self.parse_ident();
60775983
let mut path = vec!(first_ident);
6078-
match self.token {
6079-
token::Eq => {
6080-
// x = foo::bar
6081-
self.bump();
6082-
let path_lo = self.span.lo;
6083-
path = vec!(self.parse_ident());
6084-
while self.check(&token::ModSep) {
6085-
self.bump();
6086-
let id = self.parse_ident();
6087-
path.push(id);
6088-
}
6089-
let span = mk_sp(path_lo, self.span.hi);
6090-
self.obsolete(span, ObsoleteSyntax::ImportRenaming);
6091-
let path = ast::Path {
6092-
span: span,
6093-
global: false,
6094-
segments: path.into_iter().map(|identifier| {
6095-
ast::PathSegment {
6096-
identifier: identifier,
6097-
parameters: ast::PathParameters::none(),
6098-
}
6099-
}).collect()
6100-
};
6101-
return P(spanned(lo, self.span.hi,
6102-
ViewPathSimple(first_ident, path,
6103-
ast::DUMMY_NODE_ID)));
6104-
}
6105-
6106-
token::ModSep => {
5984+
if let token::ModSep = self.token {
61075985
// foo::bar or foo::{a,b,c} or foo::*
61085986
while self.check(&token::ModSep) {
61095987
self.bump();
@@ -6156,8 +6034,6 @@ impl<'a> Parser<'a> {
61566034
_ => break
61576035
}
61586036
}
6159-
}
6160-
_ => ()
61616037
}
61626038
let mut rename_to = path[path.len() - 1u];
61636039
let path = ast::Path {

src/test/compile-fail/obsolete-tilde.rs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/test/compile-fail/obsolete-tuple-struct-deref.rs

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/test/compile-fail/vec-matching-obsolete-syntax.rs

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)