| ... | ... | @@ -1586,12 +1586,18 @@ static AstNode *trans_unary_operator(Context *c, bool result_used, AstNode *bloc |
| 1586 | 1586 | emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_PreDec"); |
| 1587 | 1587 | return nullptr; |
| 1588 | 1588 | case UO_AddrOf: |
| 1589 | | emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_AddrOf"); |
| 1590 | | return nullptr; |
| 1589 | { |
| 1590 | AstNode *value_node = trans_expr(c, result_used, block, stmt->getSubExpr(), TransLValue); |
| 1591 | if (value_node == nullptr) |
| 1592 | return value_node; |
| 1593 | return trans_create_node_addr_of(c, false, false, value_node); |
| 1594 | } |
| 1591 | 1595 | case UO_Deref: |
| 1592 | 1596 | { |
| 1593 | | bool is_fn_ptr = qual_type_is_fn_ptr(c, stmt->getSubExpr()->getType()); |
| 1594 | 1597 | AstNode *value_node = trans_expr(c, result_used, block, stmt->getSubExpr(), TransRValue); |
| 1598 | if (value_node == nullptr) |
| 1599 | return nullptr; |
| 1600 | bool is_fn_ptr = qual_type_is_fn_ptr(c, stmt->getSubExpr()->getType()); |
| 1595 | 1601 | if (is_fn_ptr) |
| 1596 | 1602 | return value_node; |
| 1597 | 1603 | AstNode *unwrapped = trans_create_node_prefix_op(c, PrefixOpUnwrapMaybe, value_node); |