librustc: Disallow multiple patterns from appearing in a "let" declaration.
You can still initialize multiple variables at once with "let (x, y) = (1, 2)".
This commit is contained in:
parent
16086ecff7
commit
8114d0e950
80 changed files with 425 additions and 263 deletions
|
@ -84,7 +84,7 @@ use parse::obsolete::ObsoleteMode;
|
|||
use parse::obsolete::{ObsoleteLifetimeNotation, ObsoleteConstManagedPointer};
|
||||
use parse::obsolete::{ObsoletePurity, ObsoleteStaticMethod};
|
||||
use parse::obsolete::{ObsoleteConstItem, ObsoleteFixedLengthVectorType};
|
||||
use parse::obsolete::{ObsoleteNamedExternModule};
|
||||
use parse::obsolete::{ObsoleteNamedExternModule, ObsoleteMultipleLocalDecl};
|
||||
use parse::token::{can_begin_expr, is_ident, is_ident_or_path};
|
||||
use parse::token::{is_plain_ident, INTERPOLATED, keywords, special_idents, token_to_binop};
|
||||
use parse::token;
|
||||
|
@ -2573,11 +2573,12 @@ impl Parser {
|
|||
fn parse_let(&self) -> @decl {
|
||||
let is_mutbl = self.eat_keyword(keywords::Mut);
|
||||
let lo = self.span.lo;
|
||||
let mut locals = ~[self.parse_local(is_mutbl)];
|
||||
let mut local = self.parse_local(is_mutbl);
|
||||
while self.eat(&token::COMMA) {
|
||||
locals.push(self.parse_local(is_mutbl));
|
||||
let _ = self.parse_local(is_mutbl);
|
||||
self.obsolete(*self.span, ObsoleteMultipleLocalDecl);
|
||||
}
|
||||
return @spanned(lo, self.last_span.hi, decl_local(locals));
|
||||
return @spanned(lo, self.last_span.hi, decl_local(local));
|
||||
}
|
||||
|
||||
// parse a structure field
|
||||
|
@ -3840,15 +3841,18 @@ impl Parser {
|
|||
// parse the part of an "enum" decl following the '{'
|
||||
fn parse_enum_def(&self, _generics: &ast::Generics) -> enum_def {
|
||||
let mut variants = ~[];
|
||||
let mut all_nullary = true, have_disr = false;
|
||||
let mut all_nullary = true;
|
||||
let mut have_disr = false;
|
||||
while *self.token != token::RBRACE {
|
||||
let variant_attrs = self.parse_outer_attributes();
|
||||
let vlo = self.span.lo;
|
||||
|
||||
let vis = self.parse_visibility();
|
||||
|
||||
let ident, kind;
|
||||
let mut args = ~[], disr_expr = None;
|
||||
let ident;
|
||||
let kind;
|
||||
let mut args = ~[];
|
||||
let mut disr_expr = None;
|
||||
ident = self.parse_ident();
|
||||
if self.eat(&token::LBRACE) {
|
||||
// Parse a struct variant.
|
||||
|
@ -4352,7 +4356,8 @@ impl Parser {
|
|||
}
|
||||
|
||||
fn is_view_item(&self) -> bool {
|
||||
let tok, next_tok;
|
||||
let tok;
|
||||
let next_tok;
|
||||
if !self.is_keyword(keywords::Pub) && !self.is_keyword(keywords::Priv) {
|
||||
tok = copy *self.token;
|
||||
next_tok = self.look_ahead(1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue