summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherman ten brugge <hermantenbrugge@home.nl>2024-01-16 07:51:56 +0100
committerherman ten brugge <hermantenbrugge@home.nl>2024-01-16 07:51:56 +0100
commitbbe2e5a421e0bcc5f386302e5120e1de60f01407 (patch)
tree8219c8aa2030d314f3b7246d6c81f0e2f2d9039e
parent04365dd4c91f78361c7cf3169fe5fab3ccb9bfbf (diff)
Allow declarations in case statement
This now works: case 1: int z = 123; break;
-rw-r--r--tccgen.c2
-rw-r--r--tests/tests2/06_case.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/tccgen.c b/tccgen.c
index 602afa3..d5e9bf5 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -7266,7 +7266,7 @@ again:
if (is_expr) {
vpop();
gexpr();
- } else {
+ } else if (!decl(VT_JMP)) {
gexpr();
vpop();
}
diff --git a/tests/tests2/06_case.c b/tests/tests2/06_case.c
index c0191e2..75b8d45 100644
--- a/tests/tests2/06_case.c
+++ b/tests/tests2/06_case.c
@@ -14,7 +14,8 @@ int main()
break;
case 2:
- printf("%d\n", 2);
+ int a = 2;
+ printf("%d\n", a);
break;
default: