Use '..' as slice wildcard in vectors
This commit is contained in:
parent
35e6c02524
commit
85f107d8cb
17 changed files with 77 additions and 32 deletions
|
@ -43,7 +43,7 @@ use ast::{MutImmutable, MutMutable, mac_, mac_invoc_tt, matcher, match_nontermin
|
|||
use ast::{match_seq, match_tok, method, mt, BiMul, Mutability};
|
||||
use ast::{named_field, UnNeg, noreturn, UnNot, Pat, PatBox, PatEnum};
|
||||
use ast::{PatIdent, PatLit, PatRange, PatRegion, PatStruct};
|
||||
use ast::{PatTup, PatUniq, PatWild, private};
|
||||
use ast::{PatTup, PatUniq, PatWild, PatWildMulti, private};
|
||||
use ast::{BiRem, required};
|
||||
use ast::{ret_style, return_val, BiShl, BiShr, Stmt, StmtDecl};
|
||||
use ast::{StmtExpr, StmtSemi, StmtMac, struct_def, struct_field};
|
||||
|
@ -2724,17 +2724,35 @@ impl Parser {
|
|||
}
|
||||
}
|
||||
|
||||
let subpat = self.parse_pat();
|
||||
if is_slice {
|
||||
match subpat {
|
||||
@ast::Pat { node: PatWild, _ } => (),
|
||||
@ast::Pat { node: PatIdent(_, _, _), _ } => (),
|
||||
@ast::Pat { span, _ } => self.span_fatal(
|
||||
span, "expected an identifier or `_`"
|
||||
)
|
||||
if *self.token == token::COMMA || *self.token == token::RBRACKET {
|
||||
slice = Some(@ast::Pat {
|
||||
id: ast::DUMMY_NODE_ID,
|
||||
node: PatWildMulti,
|
||||
span: *self.span,
|
||||
})
|
||||
} else {
|
||||
let subpat = self.parse_pat();
|
||||
match subpat {
|
||||
@ast::Pat { id, node: PatWild, span } => {
|
||||
// NOTE #5830 activate after snapshot
|
||||
// self.obsolete(*self.span, ObsoleteVecDotDotWildcard);
|
||||
slice = Some(@ast::Pat {
|
||||
id: id,
|
||||
node: PatWildMulti,
|
||||
span: span
|
||||
})
|
||||
},
|
||||
@ast::Pat { node: PatIdent(_, _, _), _ } => {
|
||||
slice = Some(subpat);
|
||||
}
|
||||
@ast::Pat { span, _ } => self.span_fatal(
|
||||
span, "expected an identifier or nothing"
|
||||
)
|
||||
}
|
||||
}
|
||||
slice = Some(subpat);
|
||||
} else {
|
||||
let subpat = self.parse_pat();
|
||||
if before_slice {
|
||||
before.push(subpat);
|
||||
} else {
|
||||
|
@ -2757,7 +2775,7 @@ impl Parser {
|
|||
|
||||
etc = *self.token == token::UNDERSCORE || *self.token == token::DOTDOT;
|
||||
if *self.token == token::UNDERSCORE {
|
||||
// FIXME #5830 activate after snapshot
|
||||
// NOTE #5830 activate after snapshot
|
||||
// self.obsolete(*self.span, ObsoleteStructWildcard);
|
||||
}
|
||||
if etc {
|
||||
|
@ -3031,7 +3049,7 @@ impl Parser {
|
|||
// This is a "top constructor only" pat
|
||||
self.bump();
|
||||
if is_star {
|
||||
// FIXME #5830 activate after snapshot
|
||||
// NOTE #5830 activate after snapshot
|
||||
// self.obsolete(*self.span, ObsoleteEnumWildcard);
|
||||
}
|
||||
self.bump();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue