From 823dde39913ca086c4b498a15269397dceb4e38e Mon Sep 17 00:00:00 2001 From: "Yu En Siao (Dr.Xiao)" Date: Sun, 15 Sep 2024 22:30:41 +0800 Subject: [PATCH] Add a test case for parsing invalid octal numbers Add a test case with invalid octal numbers to 'tests/driver.sh' to ensure the lexer/parser can detect invalid octal numbers. --- tests/driver.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/driver.sh b/tests/driver.sh index ce66fd39..ec655c96 100755 --- a/tests/driver.sh +++ b/tests/driver.sh @@ -62,6 +62,31 @@ function try_output() { try "$expected" "$expected_output" "$input" } +# try_compile_error - test shecc with invalid C program +# Usage: +# - try_compile_error invalid_input_code +# compile "invalid_input_code" with shecc so that shecc generates a +# compilation error message. +# +# This function uses shecc to compile invalid code and obtains the exit +# code returned by shecc. The exit code must be a non-zero value to +# indicate that shecc has the ability to parse the invalid code and +# output an error message. +function try_compile_error() { + local input=$(cat) + + local tmp_in="$(mktemp --suffix .c)" + local tmp_exe="$(mktemp)" + echo "$input" > "$tmp_in" + "$SHECC" -o "$tmp_exe" "$tmp_in" + local exit_code=$? + + if [ 0 == $exit_code ]; then + echo "Error: compilation is passed." + exit 1 + fi +} + function items() { local expected="$1" local input="$2" @@ -238,6 +263,14 @@ int main() { } EOF +try_compile_error << EOF +int main() { + int a = 03, b = 01118, c = 091; + printf("%d %d %d\n", a, b, c); + return 0; +} +EOF + try_ 1 << EOF int is_odd(int x);