Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions pcl/programs-erroneous/semantic_error_16.pcl
Original file line number Diff line number Diff line change
@@ -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.
9 changes: 9 additions & 0 deletions pcl/programs-erroneous/semantic_error_17.pcl
Original file line number Diff line number Diff line change
@@ -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.
11 changes: 11 additions & 0 deletions pcl/programs-erroneous/semantic_error_18.pcl
Original file line number Diff line number Diff line change
@@ -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.
6 changes: 6 additions & 0 deletions pcl/programs-erroneous/semantic_error_19.pcl
Original file line number Diff line number Diff line change
@@ -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.
13 changes: 13 additions & 0 deletions pcl/programs-erroneous/semantic_error_20.pcl
Original file line number Diff line number Diff line change
@@ -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.
13 changes: 13 additions & 0 deletions pcl/programs-erroneous/semantic_error_21.pcl
Original file line number Diff line number Diff line change
@@ -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.
5 changes: 5 additions & 0 deletions pcl/programs-erroneous/semantic_error_22.pcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
program sem_error_deref_nil;
(* Error: Dereferencing nil *)
begin
writeInteger(nil^)
end.
11 changes: 11 additions & 0 deletions pcl/programs-erroneous/semantic_error_23.pcl
Original file line number Diff line number Diff line change
@@ -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.
14 changes: 14 additions & 0 deletions pcl/programs-erroneous/semantic_error_24.pcl
Original file line number Diff line number Diff line change
@@ -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.