Rename HIR UnOp variants
This renames the variants in HIR UnOp from enum UnOp { UnDeref, UnNot, UnNeg, } to enum UnOp { Deref, Not, Neg, } Motivations: - This is more consistent with the rest of the code base where most enum variants don't have a prefix. - These variants are never used without the `UnOp` prefix so the extra `Un` prefix doesn't help with readability. E.g. we don't have any `UnDeref`s in the code, we only have `UnOp::UnDeref`. - MIR `UnOp` type variants don't have a prefix so this is more consistent with MIR types. - "un" prefix reads like "inverse" or "reverse", so as a beginner in rustc code base when I see "UnDeref" what comes to my mind is something like "&*" instead of just "*".
This commit is contained in:
parent
36931ce3d9
commit
c4e3558b8c
41 changed files with 80 additions and 80 deletions
|
@ -260,9 +260,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||
|
||||
fn lower_unop(&mut self, u: UnOp) -> hir::UnOp {
|
||||
match u {
|
||||
UnOp::Deref => hir::UnOp::UnDeref,
|
||||
UnOp::Not => hir::UnOp::UnNot,
|
||||
UnOp::Neg => hir::UnOp::UnNeg,
|
||||
UnOp::Deref => hir::UnOp::Deref,
|
||||
UnOp::Not => hir::UnOp::Not,
|
||||
UnOp::Neg => hir::UnOp::Neg,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1112,25 +1112,25 @@ pub type BinOp = Spanned<BinOpKind>;
|
|||
#[derive(Copy, Clone, PartialEq, Encodable, Debug, HashStable_Generic)]
|
||||
pub enum UnOp {
|
||||
/// The `*` operator (deferencing).
|
||||
UnDeref,
|
||||
Deref,
|
||||
/// The `!` operator (logical negation).
|
||||
UnNot,
|
||||
Not,
|
||||
/// The `-` operator (negation).
|
||||
UnNeg,
|
||||
Neg,
|
||||
}
|
||||
|
||||
impl UnOp {
|
||||
pub fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::UnDeref => "*",
|
||||
Self::UnNot => "!",
|
||||
Self::UnNeg => "-",
|
||||
Self::Deref => "*",
|
||||
Self::Not => "!",
|
||||
Self::Neg => "-",
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns `true` if the unary operator takes its argument by value.
|
||||
pub fn is_by_value(self) -> bool {
|
||||
matches!(self, Self::UnNeg | Self::UnNot)
|
||||
matches!(self, Self::Neg | Self::Not)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1477,7 +1477,7 @@ impl Expr<'_> {
|
|||
// https://github.com/rust-lang/rfcs/blob/master/text/0803-type-ascription.md#type-ascription-and-temporaries
|
||||
ExprKind::Type(ref e, _) => e.is_place_expr(allow_projections_from),
|
||||
|
||||
ExprKind::Unary(UnOp::UnDeref, _) => true,
|
||||
ExprKind::Unary(UnOp::Deref, _) => true,
|
||||
|
||||
ExprKind::Field(ref base, _) | ExprKind::Index(ref base, _) => {
|
||||
allow_projections_from(base) || base.is_place_expr(allow_projections_from)
|
||||
|
|
|
@ -472,7 +472,7 @@ fn lint_literal<'tcx>(
|
|||
impl<'tcx> LateLintPass<'tcx> for TypeLimits {
|
||||
fn check_expr(&mut self, cx: &LateContext<'tcx>, e: &'tcx hir::Expr<'tcx>) {
|
||||
match e.kind {
|
||||
hir::ExprKind::Unary(hir::UnOp::UnNeg, ref expr) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Neg, ref expr) => {
|
||||
// propagate negation, if the negation itself isn't negated
|
||||
if self.negated_expr_id != Some(e.hir_id) {
|
||||
self.negated_expr_id = Some(expr.hir_id);
|
||||
|
|
|
@ -55,7 +55,7 @@ impl<'tcx> Const<'tcx> {
|
|||
|
||||
let lit_input = match expr.kind {
|
||||
hir::ExprKind::Lit(ref lit) => Some(LitToConstInput { lit: &lit.node, ty, neg: false }),
|
||||
hir::ExprKind::Unary(hir::UnOp::UnNeg, ref expr) => match expr.kind {
|
||||
hir::ExprKind::Unary(hir::UnOp::Neg, ref expr) => match expr.kind {
|
||||
hir::ExprKind::Lit(ref lit) => {
|
||||
Some(LitToConstInput { lit: &lit.node, ty, neg: true })
|
||||
}
|
||||
|
|
|
@ -299,7 +299,7 @@ fn make_mirror_unadjusted<'a, 'tcx>(
|
|||
}
|
||||
}
|
||||
|
||||
hir::ExprKind::Unary(hir::UnOp::UnDeref, ref arg) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Deref, ref arg) => {
|
||||
if cx.typeck_results().is_method_call(expr) {
|
||||
overloaded_place(cx, expr, expr_ty, None, vec![arg.to_ref()], expr.span)
|
||||
} else {
|
||||
|
@ -307,7 +307,7 @@ fn make_mirror_unadjusted<'a, 'tcx>(
|
|||
}
|
||||
}
|
||||
|
||||
hir::ExprKind::Unary(hir::UnOp::UnNot, ref arg) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Not, ref arg) => {
|
||||
if cx.typeck_results().is_method_call(expr) {
|
||||
overloaded_operator(cx, expr, vec![arg.to_ref()])
|
||||
} else {
|
||||
|
@ -315,7 +315,7 @@ fn make_mirror_unadjusted<'a, 'tcx>(
|
|||
}
|
||||
}
|
||||
|
||||
hir::ExprKind::Unary(hir::UnOp::UnNeg, ref arg) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Neg, ref arg) => {
|
||||
if cx.typeck_results().is_method_call(expr) {
|
||||
overloaded_operator(cx, expr, vec![arg.to_ref()])
|
||||
} else if let hir::ExprKind::Lit(ref lit) = arg.kind {
|
||||
|
|
|
@ -866,7 +866,7 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
|
|||
return *self.const_to_pat(value, expr.hir_id, expr.span, false).kind;
|
||||
}
|
||||
hir::ExprKind::Lit(ref lit) => (lit, false),
|
||||
hir::ExprKind::Unary(hir::UnOp::UnNeg, ref expr) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Neg, ref expr) => {
|
||||
let lit = match expr.kind {
|
||||
hir::ExprKind::Lit(ref lit) => lit,
|
||||
_ => span_bug!(expr.span, "not a literal: {:?}", expr),
|
||||
|
|
|
@ -664,7 +664,7 @@ fn resolve_local<'tcx>(
|
|||
|
||||
match expr.kind {
|
||||
hir::ExprKind::AddrOf(_, _, ref subexpr)
|
||||
| hir::ExprKind::Unary(hir::UnOp::UnDeref, ref subexpr)
|
||||
| hir::ExprKind::Unary(hir::UnOp::Deref, ref subexpr)
|
||||
| hir::ExprKind::Field(ref subexpr, _)
|
||||
| hir::ExprKind::Index(ref subexpr, _) => {
|
||||
expr = &subexpr;
|
||||
|
|
|
@ -773,7 +773,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
if let hir::ExprKind::Lit(lit) = &expr.kind { lit.node.is_suffixed() } else { false }
|
||||
};
|
||||
let is_negative_int =
|
||||
|expr: &hir::Expr<'_>| matches!(expr.kind, hir::ExprKind::Unary(hir::UnOp::UnNeg, ..));
|
||||
|expr: &hir::Expr<'_>| matches!(expr.kind, hir::ExprKind::Unary(hir::UnOp::Neg, ..));
|
||||
let is_uint = |ty: Ty<'_>| matches!(ty.kind(), ty::Uint(..));
|
||||
|
||||
let in_const_context = self.tcx.hir().is_inside_const_context(expr.hir_id);
|
||||
|
|
|
@ -323,15 +323,15 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
) -> Ty<'tcx> {
|
||||
let tcx = self.tcx;
|
||||
let expected_inner = match unop {
|
||||
hir::UnOp::UnNot | hir::UnOp::UnNeg => expected,
|
||||
hir::UnOp::UnDeref => NoExpectation,
|
||||
hir::UnOp::Not | hir::UnOp::Neg => expected,
|
||||
hir::UnOp::Deref => NoExpectation,
|
||||
};
|
||||
let mut oprnd_t = self.check_expr_with_expectation(&oprnd, expected_inner);
|
||||
|
||||
if !oprnd_t.references_error() {
|
||||
oprnd_t = self.structurally_resolved_type(expr.span, oprnd_t);
|
||||
match unop {
|
||||
hir::UnOp::UnDeref => {
|
||||
hir::UnOp::Deref => {
|
||||
if let Some(ty) = self.lookup_derefing(expr, oprnd, oprnd_t) {
|
||||
oprnd_t = ty;
|
||||
} else {
|
||||
|
@ -353,14 +353,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
oprnd_t = tcx.ty_error();
|
||||
}
|
||||
}
|
||||
hir::UnOp::UnNot => {
|
||||
hir::UnOp::Not => {
|
||||
let result = self.check_user_unop(expr, oprnd_t, unop);
|
||||
// If it's builtin, we can reuse the type, this helps inference.
|
||||
if !(oprnd_t.is_integral() || *oprnd_t.kind() == ty::Bool) {
|
||||
oprnd_t = result;
|
||||
}
|
||||
}
|
||||
hir::UnOp::UnNeg => {
|
||||
hir::UnOp::Neg => {
|
||||
let result = self.check_user_unop(expr, oprnd_t, unop);
|
||||
// If it's builtin, we can reuse the type, this helps inference.
|
||||
if !oprnd_t.is_numeric() {
|
||||
|
|
|
@ -681,7 +681,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
format!("cannot apply unary operator `{}`", op.as_str()),
|
||||
);
|
||||
match actual.kind() {
|
||||
Uint(_) if op == hir::UnOp::UnNeg => {
|
||||
Uint(_) if op == hir::UnOp::Neg => {
|
||||
err.note("unsigned values cannot be negated");
|
||||
|
||||
if let hir::ExprKind::Unary(
|
||||
|
@ -711,9 +711,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
Ref(_, ref lty, _) if *lty.kind() == Str => {}
|
||||
_ => {
|
||||
let missing_trait = match op {
|
||||
hir::UnOp::UnNeg => "std::ops::Neg",
|
||||
hir::UnOp::UnNot => "std::ops::Not",
|
||||
hir::UnOp::UnDeref => "std::ops::UnDerf",
|
||||
hir::UnOp::Neg => "std::ops::Neg",
|
||||
hir::UnOp::Not => "std::ops::Not",
|
||||
hir::UnOp::Deref => "std::ops::UnDerf",
|
||||
};
|
||||
suggest_impl_missing(&mut err, operand_ty, &missing_trait);
|
||||
}
|
||||
|
@ -782,9 +782,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
span_bug!(span, "&& and || are not overloadable")
|
||||
}
|
||||
}
|
||||
} else if let Op::Unary(hir::UnOp::UnNot, _) = op {
|
||||
} else if let Op::Unary(hir::UnOp::Not, _) = op {
|
||||
(sym::not, lang.not_trait())
|
||||
} else if let Op::Unary(hir::UnOp::UnNeg, _) = op {
|
||||
} else if let Op::Unary(hir::UnOp::Neg, _) = op {
|
||||
(sym::neg, lang.neg_trait())
|
||||
} else {
|
||||
bug!("lookup_op_method: op not supported: {:?}", op)
|
||||
|
|
|
@ -203,7 +203,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
|
||||
while let hir::ExprKind::Field(ref expr, _)
|
||||
| hir::ExprKind::Index(ref expr, _)
|
||||
| hir::ExprKind::Unary(hir::UnOp::UnDeref, ref expr) = exprs.last().unwrap().kind
|
||||
| hir::ExprKind::Unary(hir::UnOp::Deref, ref expr) = exprs.last().unwrap().kind
|
||||
{
|
||||
exprs.push(&expr);
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
debug!("convert_place_derefs_to_mutable: i={} expr={:?}", i, expr);
|
||||
|
||||
let mut source = self.node_ty(expr.hir_id);
|
||||
if matches!(expr.kind, hir::ExprKind::Unary(hir::UnOp::UnDeref, _)) {
|
||||
if matches!(expr.kind, hir::ExprKind::Unary(hir::UnOp::Deref, _)) {
|
||||
// Clear previous flag; after a pointer indirection it does not apply any more.
|
||||
inside_union = false;
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
hir::ExprKind::Index(ref base_expr, ..) => {
|
||||
self.convert_place_op_to_mutable(PlaceOp::Index, expr, base_expr);
|
||||
}
|
||||
hir::ExprKind::Unary(hir::UnOp::UnDeref, ref base_expr) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Deref, ref base_expr) => {
|
||||
self.convert_place_op_to_mutable(PlaceOp::Deref, expr, base_expr);
|
||||
}
|
||||
_ => {}
|
||||
|
|
|
@ -138,7 +138,7 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
|
|||
// operating on scalars, we clear the overload.
|
||||
fn fix_scalar_builtin_expr(&mut self, e: &hir::Expr<'_>) {
|
||||
match e.kind {
|
||||
hir::ExprKind::Unary(hir::UnOp::UnNeg | hir::UnOp::UnNot, ref inner) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Neg | hir::UnOp::Not, ref inner) => {
|
||||
let inner_ty = self.fcx.node_ty(inner.hir_id);
|
||||
let inner_ty = self.fcx.resolve_vars_if_possible(inner_ty);
|
||||
|
||||
|
|
|
@ -184,7 +184,7 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> {
|
|||
|
||||
hir::ExprKind::Type(ref subexpr, _) => self.walk_expr(subexpr),
|
||||
|
||||
hir::ExprKind::Unary(hir::UnOp::UnDeref, ref base) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Deref, ref base) => {
|
||||
// *base
|
||||
self.select_from_expr(base);
|
||||
}
|
||||
|
|
|
@ -303,7 +303,7 @@ impl<'a, 'tcx> MemCategorizationContext<'a, 'tcx> {
|
|||
|
||||
let expr_ty = self.expr_ty(expr)?;
|
||||
match expr.kind {
|
||||
hir::ExprKind::Unary(hir::UnOp::UnDeref, ref e_base) => {
|
||||
hir::ExprKind::Unary(hir::UnOp::Deref, ref e_base) => {
|
||||
if self.typeck_results.is_method_call(expr) {
|
||||
self.cat_overloaded_place(expr, e_base)
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue