aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-11 12:25:13 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:06:21 +0900
commitcf38ecdd3611efe138e24ea6b5b91c1861f36f31 (patch)
treef14e98c342040da3c911030e8d85466ec77d92d2
parent9807d9905be951e83fa20642d3c7695f5d6c9e04 (diff)
downloadducc-cf38ecdd3611efe138e24ea6b5b91c1861f36f31.tar.gz
ducc-cf38ecdd3611efe138e24ea6b5b91c1861f36f31.tar.zst
ducc-cf38ecdd3611efe138e24ea6b5b91c1861f36f31.zip
fix: fix an issue where compound expression is untyped
-rw-r--r--parse.c1
-rw-r--r--tests/086.sh17
2 files changed, 18 insertions, 0 deletions
diff --git a/parse.c b/parse.c
index 2f17225..60fde56 100644
--- a/parse.c
+++ b/parse.c
@@ -331,6 +331,7 @@ AstNode* create_new_postfix_inc_or_dec(Parser* p, AstNode* e, TokenKind op) {
ast_append(ret, expr2);
ast_append(ret, expr3);
ast_append(ret, expr4);
+ ret->ty = expr4->ty;
return ret;
}
diff --git a/tests/086.sh b/tests/086.sh
new file mode 100644
index 0000000..ee440b5
--- /dev/null
+++ b/tests/086.sh
@@ -0,0 +1,17 @@
+set -e
+
+cat <<'EOF' > expected
+105
+0
+EOF
+
+bash ../../test_diff.sh <<'EOF'
+int printf();
+
+int main() {
+ char* s = "hi";
+ while (*s++) {
+ printf("%d\n", *s);
+ }
+}
+EOF