diff --git a/src/check_expr.cpp b/src/check_expr.cpp index d0e0959d0..75e2bcf5f 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -7335,7 +7335,12 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type case_ast_node(ue, UnaryExpr, node); Ast *prev_unary_address_hint = c->unary_address_hint; c->unary_address_hint = unparen_expr(node); - check_expr_base(c, o, ue->expr, type_hint); + + Type *th = type_hint; + if (ue->op.kind == Token_And) { + th = type_deref(th); + } + check_expr_base(c, o, ue->expr, th); c->unary_address_hint = prev_unary_address_hint; node->viral_state_flags |= ue->expr->viral_state_flags;