Add support for ..=
syntax
Add ..= to the parser Add ..= to libproc_macro Add ..= to ICH Highlight ..= in rustdoc Update impl Debug for RangeInclusive to ..= Replace `...` to `..=` in range docs Make the dotdoteq warning point to the ... Add warning for ... in expressions Updated more tests to the ..= syntax Updated even more tests to the ..= syntax Updated the inclusive_range entry in unstable book
This commit is contained in:
parent
3eb19bf9b1
commit
e64efc91f4
33 changed files with 244 additions and 182 deletions
|
@ -152,6 +152,8 @@ pub enum Token {
|
|||
Dot,
|
||||
DotDot,
|
||||
DotDotDot,
|
||||
DotDotEq,
|
||||
DotEq, // HACK(durka42) never produced by the parser, only used for libproc_macro
|
||||
Comma,
|
||||
Semi,
|
||||
Colon,
|
||||
|
@ -212,18 +214,19 @@ impl Token {
|
|||
pub fn can_begin_expr(&self) -> bool {
|
||||
match *self {
|
||||
Ident(ident) => ident_can_begin_expr(ident), // value name or keyword
|
||||
OpenDelim(..) | // tuple, array or block
|
||||
Literal(..) | // literal
|
||||
Not | // operator not
|
||||
BinOp(Minus) | // unary minus
|
||||
BinOp(Star) | // dereference
|
||||
BinOp(Or) | OrOr | // closure
|
||||
BinOp(And) | // reference
|
||||
AndAnd | // double reference
|
||||
DotDot | DotDotDot | // range notation
|
||||
Lt | BinOp(Shl) | // associated path
|
||||
ModSep | // global path
|
||||
Pound => true, // expression attributes
|
||||
OpenDelim(..) | // tuple, array or block
|
||||
Literal(..) | // literal
|
||||
Not | // operator not
|
||||
BinOp(Minus) | // unary minus
|
||||
BinOp(Star) | // dereference
|
||||
BinOp(Or) | OrOr | // closure
|
||||
BinOp(And) | // reference
|
||||
AndAnd | // double reference
|
||||
DotDot | DotDotDot | DotDotEq | // range notation
|
||||
// SNAP remove DotDotDot
|
||||
Lt | BinOp(Shl) | // associated path
|
||||
ModSep | // global path
|
||||
Pound => true, // expression attributes
|
||||
Interpolated(ref nt) => match nt.0 {
|
||||
NtIdent(..) | NtExpr(..) | NtBlock(..) | NtPath(..) => true,
|
||||
_ => false,
|
||||
|
@ -402,10 +405,12 @@ impl Token {
|
|||
Dot => match joint {
|
||||
Dot => DotDot,
|
||||
DotDot => DotDotDot,
|
||||
DotEq => DotDotEq,
|
||||
_ => return None,
|
||||
},
|
||||
DotDot => match joint {
|
||||
Dot => DotDotDot,
|
||||
Eq => DotDotEq,
|
||||
_ => return None,
|
||||
},
|
||||
Colon => match joint {
|
||||
|
@ -413,9 +418,9 @@ impl Token {
|
|||
_ => return None,
|
||||
},
|
||||
|
||||
Le | EqEq | Ne | Ge | AndAnd | OrOr | Tilde | BinOpEq(..) | At | DotDotDot | Comma |
|
||||
Semi | ModSep | RArrow | LArrow | FatArrow | Pound | Dollar | Question |
|
||||
OpenDelim(..) | CloseDelim(..) | Underscore => return None,
|
||||
Le | EqEq | Ne | Ge | AndAnd | OrOr | Tilde | BinOpEq(..) | At | DotDotDot | DotEq |
|
||||
DotDotEq | Comma | Semi | ModSep | RArrow | LArrow | FatArrow | Pound | Dollar |
|
||||
Question | OpenDelim(..) | CloseDelim(..) | Underscore => return None,
|
||||
|
||||
Literal(..) | Ident(..) | Lifetime(..) | Interpolated(..) | DocComment(..) |
|
||||
Whitespace | Comment | Shebang(..) | Eof => return None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue