Same as transExpr but adds a & if the expression is an identifier referencing a function type.
fn transPointerCastExpr(t: *Translator, scope: *Scope, expr: Node.Index) TransError!ZigNode
fn transPointerCastExpr(t: *Translator, scope: *Scope, expr: Node.Index) TransError!ZigNode {
const sub_expr_node = try t.transExpr(scope, expr, .used);
switch (expr.get(t.tree)) {
.cast => |cast| if (cast.kind == .function_to_pointer and sub_expr_node.tag() == .identifier) {
return ZigTag.address_of.create(t.arena, sub_expr_node);
},
else => {},
}
return sub_expr_node;
}