Include unary operator to span for ExprKind::Unary
This commit is contained in:
parent
e2504cfc76
commit
ded73a85e2
1 changed files with 7 additions and 7 deletions
|
@ -2632,7 +2632,7 @@ impl<'a> Parser<'a> {
|
||||||
self.bump();
|
self.bump();
|
||||||
let e = self.parse_prefix_expr(None);
|
let e = self.parse_prefix_expr(None);
|
||||||
let (span, e) = self.interpolated_or_expr_span(e)?;
|
let (span, e) = self.interpolated_or_expr_span(e)?;
|
||||||
(span, self.mk_unary(UnOp::Not, e))
|
(lo.to(span), self.mk_unary(UnOp::Not, e))
|
||||||
}
|
}
|
||||||
// Suggest `!` for bitwise negation when encountering a `~`
|
// Suggest `!` for bitwise negation when encountering a `~`
|
||||||
token::Tilde => {
|
token::Tilde => {
|
||||||
|
@ -2645,26 +2645,26 @@ impl<'a> Parser<'a> {
|
||||||
err.span_label(span_of_tilde, "did you mean `!`?");
|
err.span_label(span_of_tilde, "did you mean `!`?");
|
||||||
err.help("use `!` instead of `~` if you meant to perform bitwise negation");
|
err.help("use `!` instead of `~` if you meant to perform bitwise negation");
|
||||||
err.emit();
|
err.emit();
|
||||||
(span, self.mk_unary(UnOp::Not, e))
|
(lo.to(span), self.mk_unary(UnOp::Not, e))
|
||||||
}
|
}
|
||||||
token::BinOp(token::Minus) => {
|
token::BinOp(token::Minus) => {
|
||||||
self.bump();
|
self.bump();
|
||||||
let e = self.parse_prefix_expr(None);
|
let e = self.parse_prefix_expr(None);
|
||||||
let (span, e) = self.interpolated_or_expr_span(e)?;
|
let (span, e) = self.interpolated_or_expr_span(e)?;
|
||||||
(span, self.mk_unary(UnOp::Neg, e))
|
(lo.to(span), self.mk_unary(UnOp::Neg, e))
|
||||||
}
|
}
|
||||||
token::BinOp(token::Star) => {
|
token::BinOp(token::Star) => {
|
||||||
self.bump();
|
self.bump();
|
||||||
let e = self.parse_prefix_expr(None);
|
let e = self.parse_prefix_expr(None);
|
||||||
let (span, e) = self.interpolated_or_expr_span(e)?;
|
let (span, e) = self.interpolated_or_expr_span(e)?;
|
||||||
(span, self.mk_unary(UnOp::Deref, e))
|
(lo.to(span), self.mk_unary(UnOp::Deref, e))
|
||||||
}
|
}
|
||||||
token::BinOp(token::And) | token::AndAnd => {
|
token::BinOp(token::And) | token::AndAnd => {
|
||||||
self.expect_and()?;
|
self.expect_and()?;
|
||||||
let m = self.parse_mutability();
|
let m = self.parse_mutability();
|
||||||
let e = self.parse_prefix_expr(None);
|
let e = self.parse_prefix_expr(None);
|
||||||
let (span, e) = self.interpolated_or_expr_span(e)?;
|
let (span, e) = self.interpolated_or_expr_span(e)?;
|
||||||
(span, ExprKind::AddrOf(m, e))
|
(lo.to(span), ExprKind::AddrOf(m, e))
|
||||||
}
|
}
|
||||||
token::Ident(..) if self.token.is_keyword(keywords::In) => {
|
token::Ident(..) if self.token.is_keyword(keywords::In) => {
|
||||||
self.bump();
|
self.bump();
|
||||||
|
@ -2675,13 +2675,13 @@ impl<'a> Parser<'a> {
|
||||||
let blk = self.parse_block()?;
|
let blk = self.parse_block()?;
|
||||||
let span = blk.span;
|
let span = blk.span;
|
||||||
let blk_expr = self.mk_expr(span, ExprKind::Block(blk), ThinVec::new());
|
let blk_expr = self.mk_expr(span, ExprKind::Block(blk), ThinVec::new());
|
||||||
(span, ExprKind::InPlace(place, blk_expr))
|
(lo.to(span), ExprKind::InPlace(place, blk_expr))
|
||||||
}
|
}
|
||||||
token::Ident(..) if self.token.is_keyword(keywords::Box) => {
|
token::Ident(..) if self.token.is_keyword(keywords::Box) => {
|
||||||
self.bump();
|
self.bump();
|
||||||
let e = self.parse_prefix_expr(None);
|
let e = self.parse_prefix_expr(None);
|
||||||
let (span, e) = self.interpolated_or_expr_span(e)?;
|
let (span, e) = self.interpolated_or_expr_span(e)?;
|
||||||
(span, ExprKind::Box(e))
|
(lo.to(span), ExprKind::Box(e))
|
||||||
}
|
}
|
||||||
_ => return self.parse_dot_or_call_expr(Some(attrs))
|
_ => return self.parse_dot_or_call_expr(Some(attrs))
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue