diff options
| -rw-r--r-- | main.c | 1 | ||||
| -rw-r--r-- | tests/054.sh | 23 |
2 files changed, 24 insertions, 0 deletions
@@ -942,6 +942,7 @@ AstNode* ast_new_member_access_expr(AstNode* obj, const String* name) { AstNode* e = ast_new(AstNodeKind_deref_expr); e->node_operand = ast_new_binary_expr(TokenKind_plus, obj, ast_new_int(type_offsetof(obj->ty->to, name))); e->ty = type_member_typeof(obj->ty->to, name); + e->node_operand->ty = type_new_ptr(e->ty); return e; } diff --git a/tests/054.sh b/tests/054.sh new file mode 100644 index 0000000..06252b9 --- /dev/null +++ b/tests/054.sh @@ -0,0 +1,23 @@ +set -e + +cat <<'EOF' > expected +0 +1 +EOF +bash ../../test_diff.sh <<'EOF' +int printf(); +void* calloc(); + +struct S { + int a; + int b; +}; + +int main() { + struct S* s = calloc(1, sizeof(struct S)); + s->b = 1; + printf("%ld\n", s->a); + printf("%ld\n", s->b); + return 0; +} +EOF |
