Remove proc keyword

This commit is contained in:
Guillaume Gomez 2015-03-08 00:58:45 +01:00
parent d30609ffd7
commit 4e877adddf
4 changed files with 10 additions and 37 deletions

View File

@ -59,12 +59,12 @@ impl<'a> ParserObsoleteMethods for parser::Parser<'a> {
),
ObsoleteSyntax::ProcType => (
"the `proc` type",
"use unboxed closures instead",
"is not used for moment, use unboxed closures instead",
true,
),
ObsoleteSyntax::ProcExpr => (
"`proc` expression",
"use a `move ||` expression instead",
"is not used for the moment, use a `move ||` expression instead",
true,
),
ObsoleteSyntax::ClosureType => (

View File

@ -1051,9 +1051,7 @@ impl<'a> Parser<'a> {
let lifetime_defs = self.parse_late_bound_lifetime_defs();
// examine next token to decide to do
if self.eat_keyword_noexpect(keywords::Proc) {
self.parse_proc_type(lifetime_defs)
} else if self.token_is_bare_fn_keyword() || self.token_is_closure_keyword() {
if self.token_is_bare_fn_keyword() || self.token_is_closure_keyword() {
self.parse_ty_bare_fn_or_ty_closure(lifetime_defs)
} else if self.check(&token::ModSep) ||
self.token.is_ident() ||
@ -1522,8 +1520,6 @@ impl<'a> Parser<'a> {
let e = self.parse_expr();
self.expect(&token::CloseDelim(token::Paren));
TyTypeof(e)
} else if self.eat_keyword_noexpect(keywords::Proc) {
self.parse_proc_type(Vec::new())
} else if self.eat_lt() {
// QUALIFIED PATH `<TYPE as TRAIT_REF>::item`
let self_type = self.parse_ty_sum();
@ -2285,12 +2281,6 @@ impl<'a> Parser<'a> {
if self.eat_keyword(keywords::Move) {
return self.parse_lambda_expr(CaptureByValue);
}
if self.eat_keyword_noexpect(keywords::Proc) {
let span = self.last_span;
let _ = self.parse_proc_decl();
let _ = self.parse_expr();
return self.obsolete_expr(span, ObsoleteSyntax::ProcExpr);
}
if self.eat_keyword(keywords::If) {
return self.parse_if_expr();
}
@ -4645,23 +4635,6 @@ impl<'a> Parser<'a> {
})
}
/// Parses the `(arg, arg) -> return_type` header on a procedure.
fn parse_proc_decl(&mut self) -> P<FnDecl> {
let inputs =
self.parse_unspanned_seq(&token::OpenDelim(token::Paren),
&token::CloseDelim(token::Paren),
seq_sep_trailing_allowed(token::Comma),
|p| p.parse_fn_block_arg());
let output = self.parse_ret_ty();
P(FnDecl {
inputs: inputs,
output: output,
variadic: false
})
}
/// Parse the name and optional generic types of a function header.
fn parse_fn_header(&mut self) -> (Ident, ast::Generics) {
let id = self.parse_ident();

View File

@ -561,11 +561,11 @@ declare_special_idents_and_keywords! {
(39, Virtual, "virtual");
(40, While, "while");
(41, Continue, "continue");
(42, Proc, "proc");
(43, Box, "box");
(44, Const, "const");
(45, Where, "where");
(42, Box, "box");
(43, Const, "const");
(44, Where, "where");
'reserved:
(45, Proc, "proc");
(46, Alignof, "alignof");
(47, Become, "become");
(48, Offsetof, "offsetof");

View File

@ -10,8 +10,8 @@
// Test that we generate obsolete syntax errors around usages of `proc`.
fn foo(p: proc()) { } //~ ERROR obsolete syntax: the `proc` type
fn foo(p: proc()) { } //~ ERROR: the `proc` type isn't used for the moment
fn bar() { proc() 1; } //~ ERROR obsolete syntax: `proc` expression
fn bar() { proc() 1; } //~ ERROR: `proc` expression isn't used for the moment
fn main() { }
fn main() { }