diff options
Diffstat (limited to 'ecomp-c/tests')
-rw-r--r-- | ecomp-c/tests/procedure_call_too_many_parameters.e | 20 | ||||
-rw-r--r-- | ecomp-c/tests/procedure_call_too_many_parameters.easm | 48 | ||||
-rw-r--r-- | ecomp-c/tests/procedure_call_too_many_parameters.ecomp_err | 1 |
3 files changed, 69 insertions, 0 deletions
diff --git a/ecomp-c/tests/procedure_call_too_many_parameters.e b/ecomp-c/tests/procedure_call_too_many_parameters.e new file mode 100644 index 0000000..bbbe12e --- /dev/null +++ b/ecomp-c/tests/procedure_call_too_many_parameters.e @@ -0,0 +1,20 @@ +/* + * procedure call with wrong number of parameters + */ + +module procedure_call_value_parameters; + +var + i : integer := 1; + +procedure proc( x : integer ); +var + l : integer; +begin + l := x; + i := l; +end + +begin + proc( 42, 77 ); +end diff --git a/ecomp-c/tests/procedure_call_too_many_parameters.easm b/ecomp-c/tests/procedure_call_too_many_parameters.easm new file mode 100644 index 0000000..d7fb8b4 --- /dev/null +++ b/ecomp-c/tests/procedure_call_too_many_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_many_parameters.ecomp_err b/ecomp-c/tests/procedure_call_too_many_parameters.ecomp_err new file mode 100644 index 0000000..a638b17 --- /dev/null +++ b/ecomp-c/tests/procedure_call_too_many_parameters.ecomp_err @@ -0,0 +1 @@ +Error line 20, pos 1: procedure 'proc' expects 1 parameter(s), but 2 were given |