aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-27 00:06:30 +0900
committernsfisis <nsfisis@gmail.com>2025-08-27 00:44:56 +0900
commitf030b6c546cc163c4b90a97aa399ffb9c1f6eeae (patch)
tree3b4b1d86cf2b1eee0a37932ae19a58860deb80f3 /tests
parent022b9404fe60e2acaf55b7c35abed4b06251a1a1 (diff)
downloadducc-f030b6c546cc163c4b90a97aa399ffb9c1f6eeae.tar.gz
ducc-f030b6c546cc163c4b90a97aa399ffb9c1f6eeae.tar.zst
ducc-f030b6c546cc163c4b90a97aa399ffb9c1f6eeae.zip
feat: implement #elif* directives
Diffstat (limited to 'tests')
-rw-r--r--tests/100.sh44
-rw-r--r--tests/101.sh22
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/100.sh b/tests/100.sh
new file mode 100644
index 0000000..9df8476
--- /dev/null
+++ b/tests/100.sh
@@ -0,0 +1,44 @@
+cat <<'EOF' > expected
+1
+1
+2
+3
+EOF
+
+test_diff <<'EOF'
+int printf();
+
+int main() {
+#if 1
+ printf("1\n");
+#elif 1
+ printf("2\n");
+#else
+ printf("3\n");
+#endif
+
+#if 1
+ printf("1\n");
+#elif 0
+ printf("2\n");
+#else
+ printf("3\n");
+#endif
+
+#if 0
+ printf("1\n");
+#elif 1
+ printf("2\n");
+#else
+ printf("3\n");
+#endif
+
+#if 0
+ printf("1\n");
+#elif 0
+ printf("2\n");
+#else
+ printf("3\n");
+#endif
+}
+EOF
diff --git a/tests/101.sh b/tests/101.sh
new file mode 100644
index 0000000..338b879
--- /dev/null
+++ b/tests/101.sh
@@ -0,0 +1,22 @@
+cat <<'EOF' > expected
+main.c:2: expected '#endif', but got '<eof>'
+EOF
+test_compile_error <<'EOF'
+#if 0
+EOF
+
+cat <<'EOF' > expected
+main.c:3: expected '#endif', but got '<eof>'
+EOF
+test_compile_error <<'EOF'
+#if 1
+#else
+EOF
+
+cat <<'EOF' > expected
+main.c:3: expected '#endif', but got '<eof>'
+EOF
+test_compile_error <<'EOF'
+#if 1
+#elif 1
+EOF