aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp7
1 files changed, 6 insertions, 1 deletions
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;