From fbd0896eef2f79bdd7006c9405e441b9f56562a8 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 18 Aug 2020 07:21:15 +0200 Subject: added another test for procedure parameter mismatch --- ecomp-c/test.sh | 1 + ecomp-c/tests/procedure_call_too_few_parameters.e | 20 +++++++++ .../tests/procedure_call_too_few_parameters.easm | 48 ++++++++++++++++++++++ .../procedure_call_too_few_parameters.ecomp_err | 1 + 4 files changed, 70 insertions(+) create mode 100644 ecomp-c/tests/procedure_call_too_few_parameters.e create mode 100644 ecomp-c/tests/procedure_call_too_few_parameters.easm create mode 100644 ecomp-c/tests/procedure_call_too_few_parameters.ecomp_err diff --git a/ecomp-c/test.sh b/ecomp-c/test.sh index fbcc2b6..12ba9cf 100755 --- a/ecomp-c/test.sh +++ b/ecomp-c/test.sh @@ -28,6 +28,7 @@ procedure_local_variables procedure_scoping procedure_call_value_parameters procedure_call_too_many_parameters +procedure_call_too_few_parameters example_divisors example_divisors_array_result example_reverse_array diff --git a/ecomp-c/tests/procedure_call_too_few_parameters.e b/ecomp-c/tests/procedure_call_too_few_parameters.e new file mode 100644 index 0000000..0befb69 --- /dev/null +++ b/ecomp-c/tests/procedure_call_too_few_parameters.e @@ -0,0 +1,20 @@ +/* + * procedure call with too few number of parameters + */ + +module procedure_call_too_few_parameters; + +var + i : integer := 1; + +procedure proc( x : integer ); +var + l : integer; +begin + l := x; + i := l; +end + +begin + proc; +end diff --git a/ecomp-c/tests/procedure_call_too_few_parameters.easm b/ecomp-c/tests/procedure_call_too_few_parameters.easm new file mode 100644 index 0000000..d7fb8b4 --- /dev/null +++ b/ecomp-c/tests/procedure_call_too_few_parameters.easm @@ -0,0 +1,48 @@ +format binary +use32 +org $1000000 +jmp __global_0 +; DECL i -> integer, 1 +; param x, offset: -8, size: 4 +; PROC proc +__global_proc: +push ebp +push esp +pop ebp +; DECL l -> integer, 0 +; local l, offset: 4, size: 4 +mov eax, 4 +sub esp, eax +push ebp +pop ebx +mov eax, 4 +sub ebx, eax +mov eax, 0 +mov [ebx], eax +; LET l <- x +push ebp +pop ebx +mov eax, -8 +sub ebx, eax +mov eax, [ebx] +push eax +push ebp +pop ebx +mov eax, 4 +sub ebx, eax +pop eax +mov [ebx], eax +; LET i <- l +push ebp +pop ebx +mov eax, 4 +sub ebx, eax +mov eax, [ebx] +push eax +pop eax +mov [i], eax +mov eax, 4 +add esp, eax +pop ebp +ret 4 +__global_0: diff --git a/ecomp-c/tests/procedure_call_too_few_parameters.ecomp_err b/ecomp-c/tests/procedure_call_too_few_parameters.ecomp_err new file mode 100644 index 0000000..24aca6d --- /dev/null +++ b/ecomp-c/tests/procedure_call_too_few_parameters.ecomp_err @@ -0,0 +1 @@ +Error line 20, pos 1: procedure 'proc' expects 1 parameter(s), but 0 were given -- cgit v1.2.3-54-g00ecf