diff --git a/pcl/programs-erroneous/semantic_error_16.pcl b/pcl/programs-erroneous/semantic_error_16.pcl new file mode 100644 index 0000000..8cf1ccc --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_16.pcl @@ -0,0 +1,14 @@ +program sem_error_illegal_cross_scope_jump; +(* Error: Illegal cross-scope jump: label declared in the main block but used by goto inside a nested procedure *) + +label outside; + +procedure inner(); +begin + goto outside +end; + +begin + inner(); + outside : writeString("outside") +end. diff --git a/pcl/programs-erroneous/semantic_error_17.pcl b/pcl/programs-erroneous/semantic_error_17.pcl new file mode 100644 index 0000000..7bdd4a2 --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_17.pcl @@ -0,0 +1,9 @@ +program sem_error_goto_label_not_defined; +(* Error: 'goto' targets a label that is declared but never defined in any body *) + +label missing; + +begin + goto missing; + writeString("error") +end. diff --git a/pcl/programs-erroneous/semantic_error_18.pcl b/pcl/programs-erroneous/semantic_error_18.pcl new file mode 100644 index 0000000..b97adb3 --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_18.pcl @@ -0,0 +1,11 @@ +program sem_error_result_in_procedure; +(* Error: 'result' is used inside a procedure (procedures do not return values) *) + +procedure p(); +begin + result := 1 +end; + +begin + p() +end. diff --git a/pcl/programs-erroneous/semantic_error_19.pcl b/pcl/programs-erroneous/semantic_error_19.pcl new file mode 100644 index 0000000..a3eb006 --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_19.pcl @@ -0,0 +1,6 @@ +program sem_error_result_in_main; +(* Error: 'result' is used in the main program body (result exists only inside functions) *) + +begin + result := 1 +end. diff --git a/pcl/programs-erroneous/semantic_error_20.pcl b/pcl/programs-erroneous/semantic_error_20.pcl new file mode 100644 index 0000000..6d2ab6c --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_20.pcl @@ -0,0 +1,13 @@ +program sem_error_forward_function_mismatch; +(* Error: Forward function declaration is not consistent with the later definition *) + +forward function foo(x : integer) : integer; + +function foo(x : integer; y : integer) : integer; +begin + result := x + y +end; + +begin + writeString("error") +end. diff --git a/pcl/programs-erroneous/semantic_error_21.pcl b/pcl/programs-erroneous/semantic_error_21.pcl new file mode 100644 index 0000000..8c972b3 --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_21.pcl @@ -0,0 +1,13 @@ +program sem_error_assignment_from_procedure_call; +(* Error: No assignment from procedure calls (only functions can return values) *) + +var x : integer; + +procedure p(); +begin + writeString("hello") +end; + +begin + x := p() +end. diff --git a/pcl/programs-erroneous/semantic_error_22.pcl b/pcl/programs-erroneous/semantic_error_22.pcl new file mode 100644 index 0000000..d6acc67 --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_22.pcl @@ -0,0 +1,5 @@ +program sem_error_deref_nil; +(* Error: Dereferencing nil *) +begin + writeInteger(nil^) +end. diff --git a/pcl/programs-erroneous/semantic_error_23.pcl b/pcl/programs-erroneous/semantic_error_23.pcl new file mode 100644 index 0000000..842d8af --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_23.pcl @@ -0,0 +1,11 @@ +program sem_error_var_param_requires_lvalue_const; +(* Error: 'var' (by reference) parameter requires an lvalue; constant passed *) + +procedure inc(var x : integer); +begin + x := x + 1 +end; + +begin + inc(1) +end. diff --git a/pcl/programs-erroneous/semantic_error_24.pcl b/pcl/programs-erroneous/semantic_error_24.pcl new file mode 100644 index 0000000..5dac09c --- /dev/null +++ b/pcl/programs-erroneous/semantic_error_24.pcl @@ -0,0 +1,14 @@ +program sem_error_var_param_requires_lvalue_expr; +(* Error: 'var' (by reference) parameter requires an lvalue; expression passed *) + +var a : integer; + +procedure inc(var x : integer); +begin + x := x + 1 +end; + +begin + a := 10; + inc(a + 1) +end.