summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaweł Dybiec <pdybiec@stud.cs.uni.wroc.pl>2018-12-09 18:57:17 +0100
committerPaweł Dybiec <pdybiec@stud.cs.uni.wroc.pl>2018-12-09 18:57:17 +0100
commit21952240e9a785713351ca336e11df498480f905 (patch)
treed61e33c910adae94b5cde0b2d3ffee13aa8062ee
parentInitial code for translator (diff)
Tests
-rw-r--r--tests/pracownia2/error/000_length_as_boolA.xi6
-rw-r--r--tests/pracownia2/error/001_decl_curly_bool.xi6
-rw-r--r--tests/pracownia2/error/002_init2_boolA_fst_only.xi7
-rw-r--r--tests/pracownia2/error/003_comp_gt_intA_boolA.xi7
-rw-r--r--tests/pracownia2/error/004_formal_arg_initialized_array.xi5
-rw-r--r--tests/pracownia2/error/005_length_bool.xi6
-rw-r--r--tests/pracownia2/error/006_decl_and_def.xi9
-rw-r--r--tests/pracownia2/error/007_function_used_as_procedure.xi9
-rw-r--r--tests/pracownia2/error/008_comp_le_bool.xi7
-rw-r--r--tests/pracownia2/error/009_shadowing_decl_return.xi5
-rw-r--r--tests/pracownia2/error/010_def_and_decl.xi9
-rw-r--r--tests/pracownia2/error/011_procedure_used_as_function_init.xi8
-rw-r--r--tests/pracownia2/error/012_comp_le_intA_boolA.xi7
-rw-r--r--tests/pracownia2/error/013_string_boolA.xi7
-rw-r--r--tests/pracownia2/error/014_if_cond_boolA.xi7
-rw-r--r--tests/pracownia2/error/015_function_missing_return_if.xi7
-rw-r--r--tests/pracownia2/error/016_formal_pars_decl.xi4
-rw-r--r--tests/pracownia2/error/017_int_boolA.xi7
-rw-r--r--tests/pracownia2/error/018_decl_curly_int.xi6
-rw-r--r--tests/pracownia2/error/019_multi_return_type_initialized_array.xi4
-rw-r--r--tests/pracownia2/error/020_procedure_used_as_function_ifcond.xi9
-rw-r--r--tests/pracownia2/error/021_expected_2_given3.xi8
-rw-r--r--tests/pracownia2/error/022_function_missing_return_ifelse_else_return.xi9
-rw-r--r--tests/pracownia2/error/023_bool_as_A.xi7
-rw-r--r--tests/pracownia2/error/024_char_intA.xi7
-rw-r--r--tests/pracownia2/error/025_rem_trueture.xi7
-rw-r--r--tests/pracownia2/error/026_function_missing_return_ifelse.xi8
-rw-r--r--tests/pracownia2/error/027_boolA_index.xi7
-rw-r--r--tests/pracownia2/error/028_shadowing_decl_more_fpars.xi5
-rw-r--r--tests/pracownia2/error/029_expected_2_given1_joker.xi8
-rw-r--r--tests/pracownia2/error/030_assign_curly_int.xi7
-rw-r--r--tests/pracownia2/error/031_int_as_A.xi7
-rw-r--r--tests/pracownia2/error/032_comp_gt_bool.xi7
-rw-r--r--tests/pracownia2/error/033_minus_trueture.xi7
-rw-r--r--tests/pracownia2/error/034_ifelse_copnd_boolA.xi8
-rw-r--r--tests/pracownia2/error/035_procedure_too_many_args_expect1.xi8
-rw-r--r--tests/pracownia2/error/036_comp_lt_boolA.xi7
-rw-r--r--tests/pracownia2/error/037_samedecl.xi6
-rw-r--r--tests/pracownia2/error/038_string_intAA.xi7
-rw-r--r--tests/pracownia2/error/039_init_bool.xi7
-rw-r--r--tests/pracownia2/error/040_expected_2_given0.xi8
-rw-r--r--tests/pracownia2/error/041_comp_gt_boolA.xi7
-rw-r--r--tests/pracownia2/error/042_init2_intA_fst.xi7
-rw-r--r--tests/pracownia2/error/043_init2_bool_snd.xi7
-rw-r--r--tests/pracownia2/error/044_assign_curly_bool.xi7
-rw-r--r--tests/pracownia2/error/045_bool_index.xi7
-rw-r--r--tests/pracownia2/error/046_length_as_bool.xi6
-rw-r--r--tests/pracownia2/error/047_init2_boolA_fst.xi7
-rw-r--r--tests/pracownia2/error/048_false_intA.xi7
-rw-r--r--tests/pracownia2/error/049_shadowing_decl_return_more.xi5
-rw-r--r--tests/pracownia2/error/050_function_missing_return_if_return.xi8
-rw-r--r--tests/pracownia2/error/051_procedure_used_as_function_return.xi8
-rw-r--r--tests/pracownia2/error/052_function_missing_return.xi5
-rw-r--r--tests/pracownia2/error/053_multi_return_type_initialized_array_multidim.xi4
-rw-r--r--tests/pracownia2/error/054_shadowing_decl_return_less.xi5
-rw-r--r--tests/pracownia2/error/055_initialized_array.xi9
-rw-r--r--tests/pracownia2/error/056_false_int.xi7
-rw-r--r--tests/pracownia2/error/057_false_boolA.xi7
-rw-r--r--tests/pracownia2/error/058_formal_pars_def.xi6
-rw-r--r--tests/pracownia2/error/059_char_bool.xi7
-rw-r--r--tests/pracownia2/error/060_procedure_too_less_args_expect2.xi8
-rw-r--r--tests/pracownia2/error/061_while_cond_int.xi7
-rw-r--r--tests/pracownia2/error/062_shadowing_decl_less_fpars.xi5
-rw-r--r--tests/pracownia2/error/063_comp_lt_bool.xi7
-rw-r--r--tests/pracownia2/error/064_procedure_used_as_function_ifelsecond.xi10
-rw-r--r--tests/pracownia2/error/065_comp_ge_boolA.xi7
-rw-r--r--tests/pracownia2/error/066_initsize_wrong_place.xi6
-rw-r--r--tests/pracownia2/error/067_comp_ge_boolA.xi7
-rw-r--r--tests/pracownia2/error/068_formal_pars_decl_other_type.xi4
-rw-r--r--tests/pracownia2/error/069_int_bool.xi7
-rw-r--r--tests/pracownia2/error/070_char_boolA.xi7
-rw-r--r--tests/pracownia2/error/071_procedure_used_as_function_whilecond.xi9
-rw-r--r--tests/pracownia2/error/072_if_cond_int.xi7
-rw-r--r--tests/pracownia2/error/073_comp_le_boolA.xi7
-rw-r--r--tests/pracownia2/error/074_expecting2_given1.xi6
-rw-r--r--tests/pracownia2/error/075_shadowing_decl_return_type.xi5
-rw-r--r--tests/pracownia2/error/076_intA_index.xi7
-rw-r--r--tests/pracownia2/error/077_procedure_too_many_args_expect0.xi8
-rw-r--r--tests/pracownia2/error/078_true_int.xi7
-rw-r--r--tests/pracownia2/error/079_comp_gt_boolA_intA.xi7
-rw-r--r--tests/pracownia2/error/080_int_intA.xi7
-rw-r--r--tests/pracownia2/error/081_procedure_too_less_args_expect1.xi8
-rw-r--r--tests/pracownia2/error/082_function_missing_return_while_return.xi8
-rw-r--r--tests/pracownia2/error/083_shadowing_decl_other_fpartype.xi5
-rw-r--r--tests/pracownia2/error/084_init2_boolA_snd.xi7
-rw-r--r--tests/pracownia2/error/085_expecting2_given_proc.xi8
-rw-r--r--tests/pracownia2/error/086_function_missing_return_ifelse_then_return.xi9
-rw-r--r--tests/pracownia2/error/087_comp_ge_bool.xi7
-rw-r--r--tests/pracownia2/error/088_init2_intA_fst_only.xi7
-rw-r--r--tests/pracownia2/error/089_comp_le_boolA_intA.xi7
-rw-r--r--tests/pracownia2/error/090_expected_2_given3_joker.xi8
-rw-r--r--tests/pracownia2/error/091_function_missing_return_while_simple.xi7
-rw-r--r--tests/pracownia2/error/092_expected_2_given1.xi8
-rw-r--r--tests/pracownia2/error/093_init2_intA_snd.xi7
-rw-r--r--tests/pracownia2/error/094_while_cond_boolA.xi7
-rw-r--r--tests/pracownia2/error/095_mult_trueture.xi7
-rw-r--r--tests/pracownia2/error/096_procedure_used_in_return_in_procedure.xi9
-rw-r--r--tests/pracownia2/error/097_init2_bool_fst_only.xi7
-rw-r--r--tests/pracownia2/error/098_true_boolA.xi7
-rw-r--r--tests/pracownia2/error/099_variables_nested_scope.xi9
-rw-r--r--tests/pracownia2/error/100_string_int.xi7
-rw-r--r--tests/pracownia2/error/101_init_intA.xi7
-rw-r--r--tests/pracownia2/error/102_ifelse_cond_int.xi7
-rw-r--r--tests/pracownia2/error/103_comp_gt_boolA.xi7
-rw-r--r--tests/pracownia2/error/104_plus_trueture.xi7
-rw-r--r--tests/pracownia2/error/105_true_intA.xi7
-rw-r--r--tests/pracownia2/error/106_length_as_intA.xi6
-rw-r--r--tests/pracownia2/error/107_variables_nested_scope_ifelse.xi10
-rw-r--r--tests/pracownia2/error/108_bool_as_A_from_A.xi6
-rw-r--r--tests/pracownia2/error/109_return_type_initialized_array.xi4
-rw-r--r--tests/pracownia2/error/110_expecting2_given3.xi6
-rw-r--r--tests/pracownia2/error/111_variables_nested_scope_while.xi9
-rw-r--r--tests/pracownia2/error/112_comp_lt_intA_boolA.xi7
-rw-r--r--tests/pracownia2/error/113_missing_multireturn.xi5
-rw-r--r--tests/pracownia2/error/114_return_multireturn_func_not_allowed.xi8
-rw-r--r--tests/pracownia2/error/115_expecting2_given0.xi6
-rw-r--r--tests/pracownia2/error/116_length_int.xi6
-rw-r--r--tests/pracownia2/error/117_comp_le_boolA.xi7
-rw-r--r--tests/pracownia2/error/118_variables_nested_scope_if.xi9
-rw-r--r--tests/pracownia2/error/119_comp_lt_boolA_intA.xi7
-rw-r--r--tests/pracownia2/error/120_formal_pars_def_other_type.xi6
-rw-r--r--tests/pracownia2/error/121_comp_ge_boolA_intA.xi7
-rw-r--r--tests/pracownia2/error/122_init_boolA.xi7
-rw-r--r--tests/pracownia2/error/123_comp_ge_intA_boolA.xi7
-rw-r--r--tests/pracownia2/error/124_init2_bool_fst.xi7
-rw-r--r--tests/pracownia2/error/125_expected_2_given0_joker.xi8
-rw-r--r--tests/pracownia2/error/126_return_type_initialized_array_multidim.xi4
-rw-r--r--tests/pracownia2/error/127_formal_arg_initialized_array_multidim.xi5
-rw-r--r--tests/pracownia2/error/128_div_trueture.xi7
-rw-r--r--tests/pracownia2/error/129_string_bool.xi7
-rw-r--r--tests/pracownia2/error/130_comp_lt_boolA.xi7
-rw-r--r--tests/pracownia2/error/131_variables_same_scope.xi7
-rw-r--r--tests/pracownia2/ok/000_without_expectation_concat_second_magic.xi6
-rw-r--r--tests/pracownia2/ok/001_ifelse_on_pred.xi10
-rw-r--r--tests/pracownia2/ok/002_fetch_int.xi7
-rw-r--r--tests/pracownia2/ok/003_with_expectation_concat_second_empty.xi6
-rw-r--r--tests/pracownia2/ok/004_with_expectation_empty_curly.xi7
-rw-r--r--tests/pracownia2/ok/005_with_expectation_concat_second_magic.xi6
-rw-r--r--tests/pracownia2/ok/006_if_on_literal.xi8
-rw-r--r--tests/pracownia2/ok/007_without_expectation_concat_second_weird.xi6
-rw-r--r--tests/pracownia2/ok/008_fetch_fetch.xi7
-rw-r--r--tests/pracownia2/ok/009_while_on_literal.xi8
-rw-r--r--tests/pracownia2/ok/010_with_expectation_concat_first_weird.xi6
-rw-r--r--tests/pracownia2/ok/011_simple_length.xi6
-rw-r--r--tests/pracownia2/ok/012_with_expectation_concat_first_magic.xi6
-rw-r--r--tests/pracownia2/ok/013_without_expectation_concat_second_empty.xi6
-rw-r--r--tests/pracownia2/ok/014_if_on_var.xi8
-rw-r--r--tests/pracownia2/ok/015_with_expectation_concat_second_weird.xi6
-rw-r--r--tests/pracownia2/ok/016_with_expectation_a_lot_of_magic_int.xi40
-rw-r--r--tests/pracownia2/ok/017_ifelse_on_and.xi9
-rw-r--r--tests/pracownia2/ok/018_if_on_pred.xi9
-rw-r--r--tests/pracownia2/ok/019_ifelse_on_or.xi9
-rw-r--r--tests/pracownia2/ok/020_with_expectation_concat_both_empty.xi6
-rw-r--r--tests/pracownia2/ok/021_mutualrec.xi12
-rw-r--r--tests/pracownia2/ok/022_int.xi10
-rw-r--r--tests/pracownia2/ok/023_with_expectation_concat_both_magic.xi6
-rw-r--r--tests/pracownia2/ok/024_store_bool.xi6
-rw-r--r--tests/pracownia2/ok/025_with_expectation_concat_magic_empty.xi6
-rw-r--r--tests/pracownia2/ok/026_length_string.xi6
-rw-r--r--tests/pracownia2/ok/027_with_expectation_curly_elems.xi7
-rw-r--r--tests/pracownia2/ok/028_while_on_and.xi8
-rw-r--r--tests/pracownia2/ok/029_with_expectation_concat_empty_weird.xi6
-rw-r--r--tests/pracownia2/ok/030_intA.xi8
-rw-r--r--tests/pracownia2/ok/031_if_on_or.xi8
-rw-r--r--tests/pracownia2/ok/032_with_expectation_first_weird.xi6
-rw-r--r--tests/pracownia2/ok/033_with_expectation_concat_weird_empty.xi6
-rw-r--r--tests/pracownia2/ok/034_bool.xi8
-rw-r--r--tests/pracownia2/ok/035_store_store.xi6
-rw-r--r--tests/pracownia2/ok/036_ifelse_on_var.xi9
-rw-r--r--tests/pracownia2/ok/037_with_expectation_concat.xi6
-rw-r--r--tests/pracownia2/ok/038_length_curly.xi6
-rw-r--r--tests/pracownia2/ok/039_if_on_and.xi8
-rw-r--r--tests/pracownia2/ok/040_while_on_var.xi8
-rw-r--r--tests/pracownia2/ok/041_without_expectation_concat.xi6
-rw-r--r--tests/pracownia2/ok/042_init.xi6
-rw-r--r--tests/pracownia2/ok/043_without_expectation_second_weird.xi6
-rw-r--r--tests/pracownia2/ok/044_while_on_or.xi8
-rw-r--r--tests/pracownia2/ok/045_with_expectation_second_weird.xi6
-rw-r--r--tests/pracownia2/ok/046_with_expectation_concat_first_empty.xi6
-rw-r--r--tests/pracownia2/ok/047_with_expectation_concat_empty_magic.xi6
-rw-r--r--tests/pracownia2/ok/048_noconflict_other_scopes.xi11
-rw-r--r--tests/pracownia2/ok/049_ifelse_on_literal.xi9
-rw-r--r--tests/pracownia2/ok/050_without_expectation_curly_elems.xi7
-rw-r--r--tests/pracownia2/ok/051_while_on_pred.xi9
-rw-r--r--tests/pracownia2/ok/052_with_expectation_a_lot_of_magic_bool.xi60
-rw-r--r--tests/pracownia2/ok/053_with_expectation_concat_both_weird.xi6
-rw-r--r--tests/pracownia3/000_manyargs_3.xi11
-rw-r--r--tests/pracownia3/001_or_01.xi30
-rw-r--r--tests/pracownia3/002_list_empty.xi8
-rw-r--r--tests/pracownia3/003_concat_rhs_len.xi8
-rw-r--r--tests/pracownia3/004_return.xi12
-rw-r--r--tests/pracownia3/005_multireturn_multiargs.xi12
-rw-r--r--tests/pracownia3/006_init_variable.xi8
-rw-r--r--tests/pracownia3/007_mul_literals.xi8
-rw-r--r--tests/pracownia3/008_fac_rec_0.xi15
-rw-r--r--tests/pracownia3/009_while_while_sum.xi18
-rw-r--r--tests/pracownia3/010_length_empty.xi8
-rw-r--r--tests/pracownia3/011_concat_string.xi8
-rw-r--r--tests/pracownia3/012_multireturn_4.xi12
-rw-r--r--tests/pracownia3/013_add_literals.xi8
-rw-r--r--tests/pracownia3/014_assign.xi9
-rw-r--r--tests/pracownia3/015_sub_literals.xi8
-rw-r--r--tests/pracownia3/016_fib_rec_3.xi18
-rw-r--r--tests/pracownia3/017_return_42.xi8
-rw-r--r--tests/pracownia3/018_empty_main.xi8
-rw-r--r--tests/pracownia3/019_while_sum.xi14
-rw-r--r--tests/pracownia3/020_return_variable.xi8
-rw-r--r--tests/pracownia3/021_printInt.xi16
-rw-r--r--tests/pracownia3/022_if_eq_true.xi13
-rw-r--r--tests/pracownia3/023_ifelse_pred.xi18
-rw-r--r--tests/pracownia3/024_fac.xi17
-rw-r--r--tests/pracownia3/025_and_literals.xi16
-rw-r--r--tests/pracownia3/026_printString.xi11
-rw-r--r--tests/pracownia3/027_init_2_variables.xi9
-rw-r--r--tests/pracownia3/028_return_second_variable.xi9
-rw-r--r--tests/pracownia3/029_return_first_variable.xi9
-rw-r--r--tests/pracownia3/030_length_string.xi8
-rw-r--r--tests/pracownia3/031_div_literals.xi8
-rw-r--r--tests/pracownia3/032_return_index0.xi8
-rw-r--r--tests/pracownia3/033_multiarray.xi13
-rw-r--r--tests/pracownia3/034_or_literals.xi15
-rw-r--r--tests/pracownia3/035_return_char.xi7
-rw-r--r--tests/pracownia3/036_multireturn_3.xi12
-rw-r--r--tests/pracownia3/037_concat_lhs_len.xi8
-rw-r--r--tests/pracownia3/038_fac_rec_5.xi15
-rw-r--r--tests/pracownia3/039_ifelse_eq_true_ret.xi13
-rw-r--r--tests/pracownia3/040_string.xi8
-rw-r--r--tests/pracownia3/041_assign_index0.xi9
-rw-r--r--tests/pracownia3/042_return_nl.xi7
-rw-r--r--tests/pracownia3/043_while_or.xi18
-rw-r--r--tests/pracownia3/044_list_init.xi8
-rw-r--r--tests/pracownia3/045_mod_literals.xi8
-rw-r--r--tests/pracownia3/046_return_index1.xi8
-rw-r--r--tests/pracownia3/047_and_10_.xi30
234 files changed, 1951 insertions, 0 deletions
diff --git a/tests/pracownia2/error/000_length_as_boolA.xi b/tests/pracownia2/error/000_length_as_boolA.xi
new file mode 100644
index 0000000..55d1312
--- /dev/null
+++ b/tests/pracownia2/error/000_length_as_boolA.xi
@@ -0,0 +1,6 @@
+test(x:int[]):bool[]
+{
+    return length(x)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/001_decl_curly_bool.xi b/tests/pracownia2/error/001_decl_curly_bool.xi
new file mode 100644
index 0000000..92b81d2
--- /dev/null
+++ b/tests/pracownia2/error/001_decl_curly_bool.xi
@@ -0,0 +1,6 @@
+test()
+{
+    i:bool = {}
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/002_init2_boolA_fst_only.xi b/tests/pracownia2/error/002_init2_boolA_fst_only.xi
new file mode 100644
index 0000000..c1fdfd3
--- /dev/null
+++ b/tests/pracownia2/error/002_init2_boolA_fst_only.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool[];
+    a:int[i][];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/003_comp_gt_intA_boolA.xi b/tests/pracownia2/error/003_comp_gt_intA_boolA.xi
new file mode 100644
index 0000000..172d5bc
--- /dev/null
+++ b/tests/pracownia2/error/003_comp_gt_intA_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:bool[]):bool
+{
+  return a > b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/004_formal_arg_initialized_array.xi b/tests/pracownia2/error/004_formal_arg_initialized_array.xi
new file mode 100644
index 0000000..c234a52
--- /dev/null
+++ b/tests/pracownia2/error/004_formal_arg_initialized_array.xi
@@ -0,0 +1,5 @@
+test(x:int[43])
+{
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/005_length_bool.xi b/tests/pracownia2/error/005_length_bool.xi
new file mode 100644
index 0000000..27324e4
--- /dev/null
+++ b/tests/pracownia2/error/005_length_bool.xi
@@ -0,0 +1,6 @@
+test(x:bool):int
+{
+    return length(x)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/006_decl_and_def.xi b/tests/pracownia2/error/006_decl_and_def.xi
new file mode 100644
index 0000000..4087f76
--- /dev/null
+++ b/tests/pracownia2/error/006_decl_and_def.xi
@@ -0,0 +1,9 @@
+f(x:int):bool
+
+f(x:int):bool
+{
+    return true
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/007_function_used_as_procedure.xi b/tests/pracownia2/error/007_function_used_as_procedure.xi
new file mode 100644
index 0000000..bcf00cc
--- /dev/null
+++ b/tests/pracownia2/error/007_function_used_as_procedure.xi
@@ -0,0 +1,9 @@
+f():int
+
+g()
+{
+    f()
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/008_comp_le_bool.xi b/tests/pracownia2/error/008_comp_le_bool.xi
new file mode 100644
index 0000000..d4d45f1
--- /dev/null
+++ b/tests/pracownia2/error/008_comp_le_bool.xi
@@ -0,0 +1,7 @@
+test(a:bool, b:bool):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/009_shadowing_decl_return.xi b/tests/pracownia2/error/009_shadowing_decl_return.xi
new file mode 100644
index 0000000..66fe649
--- /dev/null
+++ b/tests/pracownia2/error/009_shadowing_decl_return.xi
@@ -0,0 +1,5 @@
+f(x:int)
+f(x:int) : int
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/010_def_and_decl.xi b/tests/pracownia2/error/010_def_and_decl.xi
new file mode 100644
index 0000000..f89d6bf
--- /dev/null
+++ b/tests/pracownia2/error/010_def_and_decl.xi
@@ -0,0 +1,9 @@
+f(x:int):bool
+{
+    return true
+}
+
+f(x:int):bool
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/011_procedure_used_as_function_init.xi b/tests/pracownia2/error/011_procedure_used_as_function_init.xi
new file mode 100644
index 0000000..627c357
--- /dev/null
+++ b/tests/pracownia2/error/011_procedure_used_as_function_init.xi
@@ -0,0 +1,8 @@
+f()
+
+g()
+{
+    x:int = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/012_comp_le_intA_boolA.xi b/tests/pracownia2/error/012_comp_le_intA_boolA.xi
new file mode 100644
index 0000000..333e826
--- /dev/null
+++ b/tests/pracownia2/error/012_comp_le_intA_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:bool[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/013_string_boolA.xi b/tests/pracownia2/error/013_string_boolA.xi
new file mode 100644
index 0000000..55510e0
--- /dev/null
+++ b/tests/pracownia2/error/013_string_boolA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool = "Polonia"
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/014_if_cond_boolA.xi b/tests/pracownia2/error/014_if_cond_boolA.xi
new file mode 100644
index 0000000..b8c0f8d
--- /dev/null
+++ b/tests/pracownia2/error/014_if_cond_boolA.xi
@@ -0,0 +1,7 @@
+test(x:bool[])
+{
+    if x {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/015_function_missing_return_if.xi b/tests/pracownia2/error/015_function_missing_return_if.xi
new file mode 100644
index 0000000..403e9ef
--- /dev/null
+++ b/tests/pracownia2/error/015_function_missing_return_if.xi
@@ -0,0 +1,7 @@
+f(x:bool):int
+{
+    if (x) {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/016_formal_pars_decl.xi b/tests/pracownia2/error/016_formal_pars_decl.xi
new file mode 100644
index 0000000..8f01fdf
--- /dev/null
+++ b/tests/pracownia2/error/016_formal_pars_decl.xi
@@ -0,0 +1,4 @@
+test(x:int, x:int, y:bool)
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/017_int_boolA.xi b/tests/pracownia2/error/017_int_boolA.xi
new file mode 100644
index 0000000..3e1f998
--- /dev/null
+++ b/tests/pracownia2/error/017_int_boolA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool[] = 42
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/018_decl_curly_int.xi b/tests/pracownia2/error/018_decl_curly_int.xi
new file mode 100644
index 0000000..060f89f
--- /dev/null
+++ b/tests/pracownia2/error/018_decl_curly_int.xi
@@ -0,0 +1,6 @@
+test()
+{
+    i:int = {}
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/019_multi_return_type_initialized_array.xi b/tests/pracownia2/error/019_multi_return_type_initialized_array.xi
new file mode 100644
index 0000000..c4d820d
--- /dev/null
+++ b/tests/pracownia2/error/019_multi_return_type_initialized_array.xi
@@ -0,0 +1,4 @@
+test(): bool[], int[42], bool[][]
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/020_procedure_used_as_function_ifcond.xi b/tests/pracownia2/error/020_procedure_used_as_function_ifcond.xi
new file mode 100644
index 0000000..46170b7
--- /dev/null
+++ b/tests/pracownia2/error/020_procedure_used_as_function_ifcond.xi
@@ -0,0 +1,9 @@
+f()
+
+g()
+{
+    if f() {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/021_expected_2_given3.xi b/tests/pracownia2/error/021_expected_2_given3.xi
new file mode 100644
index 0000000..2515d4c
--- /dev/null
+++ b/tests/pracownia2/error/021_expected_2_given3.xi
@@ -0,0 +1,8 @@
+f(): int, int, int
+
+g()
+{
+    x:int, y:int = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/022_function_missing_return_ifelse_else_return.xi b/tests/pracownia2/error/022_function_missing_return_ifelse_else_return.xi
new file mode 100644
index 0000000..ecaab14
--- /dev/null
+++ b/tests/pracownia2/error/022_function_missing_return_ifelse_else_return.xi
@@ -0,0 +1,9 @@
+f(x:bool):int
+{
+    if (x) {
+    } else {
+        return 0
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/023_bool_as_A.xi b/tests/pracownia2/error/023_bool_as_A.xi
new file mode 100644
index 0000000..bb38907
--- /dev/null
+++ b/tests/pracownia2/error/023_bool_as_A.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool;
+    x[0] = 1;
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/024_char_intA.xi b/tests/pracownia2/error/024_char_intA.xi
new file mode 100644
index 0000000..d60f490
--- /dev/null
+++ b/tests/pracownia2/error/024_char_intA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int[] = 'X'
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/025_rem_trueture.xi b/tests/pracownia2/error/025_rem_trueture.xi
new file mode 100644
index 0000000..581d5c6
--- /dev/null
+++ b/tests/pracownia2/error/025_rem_trueture.xi
@@ -0,0 +1,7 @@
+f():bool
+{
+    return true % true
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/026_function_missing_return_ifelse.xi b/tests/pracownia2/error/026_function_missing_return_ifelse.xi
new file mode 100644
index 0000000..607c154
--- /dev/null
+++ b/tests/pracownia2/error/026_function_missing_return_ifelse.xi
@@ -0,0 +1,8 @@
+f(x:bool):int
+{
+    if (x) {
+    } else {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/027_boolA_index.xi b/tests/pracownia2/error/027_boolA_index.xi
new file mode 100644
index 0000000..e2a257f
--- /dev/null
+++ b/tests/pracownia2/error/027_boolA_index.xi
@@ -0,0 +1,7 @@
+test(a:bool[])
+{
+    i:bool[];
+    a[i] = true;
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/028_shadowing_decl_more_fpars.xi b/tests/pracownia2/error/028_shadowing_decl_more_fpars.xi
new file mode 100644
index 0000000..f4dcf00
--- /dev/null
+++ b/tests/pracownia2/error/028_shadowing_decl_more_fpars.xi
@@ -0,0 +1,5 @@
+f(x:int, y:int)
+f(x:int, y:int, z:bool)
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/029_expected_2_given1_joker.xi b/tests/pracownia2/error/029_expected_2_given1_joker.xi
new file mode 100644
index 0000000..0fd29ac
--- /dev/null
+++ b/tests/pracownia2/error/029_expected_2_given1_joker.xi
@@ -0,0 +1,8 @@
+f(): int
+
+g()
+{
+    x:int, _ = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/030_assign_curly_int.xi b/tests/pracownia2/error/030_assign_curly_int.xi
new file mode 100644
index 0000000..e40ff75
--- /dev/null
+++ b/tests/pracownia2/error/030_assign_curly_int.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:int;
+    i = {}
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/031_int_as_A.xi b/tests/pracownia2/error/031_int_as_A.xi
new file mode 100644
index 0000000..30d623d
--- /dev/null
+++ b/tests/pracownia2/error/031_int_as_A.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int;
+    x[0] = 1;
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/032_comp_gt_bool.xi b/tests/pracownia2/error/032_comp_gt_bool.xi
new file mode 100644
index 0000000..3600828
--- /dev/null
+++ b/tests/pracownia2/error/032_comp_gt_bool.xi
@@ -0,0 +1,7 @@
+test(a:bool, b:bool):bool
+{
+  return a > b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/033_minus_trueture.xi b/tests/pracownia2/error/033_minus_trueture.xi
new file mode 100644
index 0000000..9798982
--- /dev/null
+++ b/tests/pracownia2/error/033_minus_trueture.xi
@@ -0,0 +1,7 @@
+f():bool
+{
+    return true - true
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/034_ifelse_copnd_boolA.xi b/tests/pracownia2/error/034_ifelse_copnd_boolA.xi
new file mode 100644
index 0000000..5f31797
--- /dev/null
+++ b/tests/pracownia2/error/034_ifelse_copnd_boolA.xi
@@ -0,0 +1,8 @@
+test(x:bool[])
+{
+    if x {
+    } else {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/035_procedure_too_many_args_expect1.xi b/tests/pracownia2/error/035_procedure_too_many_args_expect1.xi
new file mode 100644
index 0000000..a46d1be
--- /dev/null
+++ b/tests/pracownia2/error/035_procedure_too_many_args_expect1.xi
@@ -0,0 +1,8 @@
+f(x:int)
+
+g()
+{
+    f(1, 2)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/036_comp_lt_boolA.xi b/tests/pracownia2/error/036_comp_lt_boolA.xi
new file mode 100644
index 0000000..c55d624
--- /dev/null
+++ b/tests/pracownia2/error/036_comp_lt_boolA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:bool[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/037_samedecl.xi b/tests/pracownia2/error/037_samedecl.xi
new file mode 100644
index 0000000..323ef39
--- /dev/null
+++ b/tests/pracownia2/error/037_samedecl.xi
@@ -0,0 +1,6 @@
+f(x:int):bool
+
+f(x:int):bool
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/038_string_intAA.xi b/tests/pracownia2/error/038_string_intAA.xi
new file mode 100644
index 0000000..55510e0
--- /dev/null
+++ b/tests/pracownia2/error/038_string_intAA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool = "Polonia"
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/039_init_bool.xi b/tests/pracownia2/error/039_init_bool.xi
new file mode 100644
index 0000000..52bbf58
--- /dev/null
+++ b/tests/pracownia2/error/039_init_bool.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool;
+    a:int[i];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/040_expected_2_given0.xi b/tests/pracownia2/error/040_expected_2_given0.xi
new file mode 100644
index 0000000..1abe71d
--- /dev/null
+++ b/tests/pracownia2/error/040_expected_2_given0.xi
@@ -0,0 +1,8 @@
+f()
+
+g()
+{
+    x:int, y:int = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/041_comp_gt_boolA.xi b/tests/pracownia2/error/041_comp_gt_boolA.xi
new file mode 100644
index 0000000..c22e76a
--- /dev/null
+++ b/tests/pracownia2/error/041_comp_gt_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:int[]):bool
+{
+  return a > b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/042_init2_intA_fst.xi b/tests/pracownia2/error/042_init2_intA_fst.xi
new file mode 100644
index 0000000..a28d54b
--- /dev/null
+++ b/tests/pracownia2/error/042_init2_intA_fst.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:int[];
+    a:int[i][42];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/043_init2_bool_snd.xi b/tests/pracownia2/error/043_init2_bool_snd.xi
new file mode 100644
index 0000000..1c84359
--- /dev/null
+++ b/tests/pracownia2/error/043_init2_bool_snd.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool;
+    a:int[42][i];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/044_assign_curly_bool.xi b/tests/pracownia2/error/044_assign_curly_bool.xi
new file mode 100644
index 0000000..dabe469
--- /dev/null
+++ b/tests/pracownia2/error/044_assign_curly_bool.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool;
+    i = {}
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/045_bool_index.xi b/tests/pracownia2/error/045_bool_index.xi
new file mode 100644
index 0000000..17133eb
--- /dev/null
+++ b/tests/pracownia2/error/045_bool_index.xi
@@ -0,0 +1,7 @@
+test(a:bool[])
+{
+    i:bool;
+    a[i] = true;
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/046_length_as_bool.xi b/tests/pracownia2/error/046_length_as_bool.xi
new file mode 100644
index 0000000..2bc404b
--- /dev/null
+++ b/tests/pracownia2/error/046_length_as_bool.xi
@@ -0,0 +1,6 @@
+test(x:int[]):bool
+{
+    return length(x)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/047_init2_boolA_fst.xi b/tests/pracownia2/error/047_init2_boolA_fst.xi
new file mode 100644
index 0000000..b0c2284
--- /dev/null
+++ b/tests/pracownia2/error/047_init2_boolA_fst.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool[];
+    a:int[i][42];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/048_false_intA.xi b/tests/pracownia2/error/048_false_intA.xi
new file mode 100644
index 0000000..013da66
--- /dev/null
+++ b/tests/pracownia2/error/048_false_intA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int[] = false
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/049_shadowing_decl_return_more.xi b/tests/pracownia2/error/049_shadowing_decl_return_more.xi
new file mode 100644
index 0000000..2c00290
--- /dev/null
+++ b/tests/pracownia2/error/049_shadowing_decl_return_more.xi
@@ -0,0 +1,5 @@
+f(x:int) : int
+f(x:int) : int, int
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/050_function_missing_return_if_return.xi b/tests/pracownia2/error/050_function_missing_return_if_return.xi
new file mode 100644
index 0000000..a909483
--- /dev/null
+++ b/tests/pracownia2/error/050_function_missing_return_if_return.xi
@@ -0,0 +1,8 @@
+f(x:bool):int
+{
+    if (x) {
+        return 0
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/051_procedure_used_as_function_return.xi b/tests/pracownia2/error/051_procedure_used_as_function_return.xi
new file mode 100644
index 0000000..71c3cf8
--- /dev/null
+++ b/tests/pracownia2/error/051_procedure_used_as_function_return.xi
@@ -0,0 +1,8 @@
+f()
+
+g():int
+{
+    return f()    
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/052_function_missing_return.xi b/tests/pracownia2/error/052_function_missing_return.xi
new file mode 100644
index 0000000..89ee185
--- /dev/null
+++ b/tests/pracownia2/error/052_function_missing_return.xi
@@ -0,0 +1,5 @@
+f():int
+{
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/053_multi_return_type_initialized_array_multidim.xi b/tests/pracownia2/error/053_multi_return_type_initialized_array_multidim.xi
new file mode 100644
index 0000000..f2acaaa
--- /dev/null
+++ b/tests/pracownia2/error/053_multi_return_type_initialized_array_multidim.xi
@@ -0,0 +1,4 @@
+test(): bool[], int[][42][], bool[][]
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/054_shadowing_decl_return_less.xi b/tests/pracownia2/error/054_shadowing_decl_return_less.xi
new file mode 100644
index 0000000..992eb5a
--- /dev/null
+++ b/tests/pracownia2/error/054_shadowing_decl_return_less.xi
@@ -0,0 +1,5 @@
+f(x:int) : int, int
+f(x:int) : int
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/055_initialized_array.xi b/tests/pracownia2/error/055_initialized_array.xi
new file mode 100644
index 0000000..027e9ba
--- /dev/null
+++ b/tests/pracownia2/error/055_initialized_array.xi
@@ -0,0 +1,9 @@
+producer(): int[], bool
+
+test()
+{
+    x:int[30], y:bool = producer()
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/056_false_int.xi b/tests/pracownia2/error/056_false_int.xi
new file mode 100644
index 0000000..76b0bc2
--- /dev/null
+++ b/tests/pracownia2/error/056_false_int.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int = false
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/057_false_boolA.xi b/tests/pracownia2/error/057_false_boolA.xi
new file mode 100644
index 0000000..cdc3abd
--- /dev/null
+++ b/tests/pracownia2/error/057_false_boolA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool[] = false
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/058_formal_pars_def.xi b/tests/pracownia2/error/058_formal_pars_def.xi
new file mode 100644
index 0000000..d09234e
--- /dev/null
+++ b/tests/pracownia2/error/058_formal_pars_def.xi
@@ -0,0 +1,6 @@
+test(x:int, x:int, y:bool)
+{
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/059_char_bool.xi b/tests/pracownia2/error/059_char_bool.xi
new file mode 100644
index 0000000..51a1712
--- /dev/null
+++ b/tests/pracownia2/error/059_char_bool.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool = 'X'
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/060_procedure_too_less_args_expect2.xi b/tests/pracownia2/error/060_procedure_too_less_args_expect2.xi
new file mode 100644
index 0000000..0eb163d
--- /dev/null
+++ b/tests/pracownia2/error/060_procedure_too_less_args_expect2.xi
@@ -0,0 +1,8 @@
+f(x:int, y:int)
+
+g()
+{
+    f(1)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/061_while_cond_int.xi b/tests/pracownia2/error/061_while_cond_int.xi
new file mode 100644
index 0000000..f6ef07b
--- /dev/null
+++ b/tests/pracownia2/error/061_while_cond_int.xi
@@ -0,0 +1,7 @@
+test(x:int)
+{
+    while x {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/062_shadowing_decl_less_fpars.xi b/tests/pracownia2/error/062_shadowing_decl_less_fpars.xi
new file mode 100644
index 0000000..ad85289
--- /dev/null
+++ b/tests/pracownia2/error/062_shadowing_decl_less_fpars.xi
@@ -0,0 +1,5 @@
+f(x:int, y:int)
+f(x:int)
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/063_comp_lt_bool.xi b/tests/pracownia2/error/063_comp_lt_bool.xi
new file mode 100644
index 0000000..d4d45f1
--- /dev/null
+++ b/tests/pracownia2/error/063_comp_lt_bool.xi
@@ -0,0 +1,7 @@
+test(a:bool, b:bool):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/064_procedure_used_as_function_ifelsecond.xi b/tests/pracownia2/error/064_procedure_used_as_function_ifelsecond.xi
new file mode 100644
index 0000000..73a9b2a
--- /dev/null
+++ b/tests/pracownia2/error/064_procedure_used_as_function_ifelsecond.xi
@@ -0,0 +1,10 @@
+f()
+
+g()
+{
+    if f() {
+    } else {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/065_comp_ge_boolA.xi b/tests/pracownia2/error/065_comp_ge_boolA.xi
new file mode 100644
index 0000000..1e468b5
--- /dev/null
+++ b/tests/pracownia2/error/065_comp_ge_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:int[]):bool
+{
+  return a >= b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/066_initsize_wrong_place.xi b/tests/pracownia2/error/066_initsize_wrong_place.xi
new file mode 100644
index 0000000..80bbbb2
--- /dev/null
+++ b/tests/pracownia2/error/066_initsize_wrong_place.xi
@@ -0,0 +1,6 @@
+test()
+{
+    a:int[][42];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/067_comp_ge_boolA.xi b/tests/pracownia2/error/067_comp_ge_boolA.xi
new file mode 100644
index 0000000..9e8fc52
--- /dev/null
+++ b/tests/pracownia2/error/067_comp_ge_boolA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:bool[]):bool
+{
+  return a >= b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/068_formal_pars_decl_other_type.xi b/tests/pracownia2/error/068_formal_pars_decl_other_type.xi
new file mode 100644
index 0000000..79cc8e2
--- /dev/null
+++ b/tests/pracownia2/error/068_formal_pars_decl_other_type.xi
@@ -0,0 +1,4 @@
+test(x:int, x:int[], y:bool)
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/069_int_bool.xi b/tests/pracownia2/error/069_int_bool.xi
new file mode 100644
index 0000000..5a2c456
--- /dev/null
+++ b/tests/pracownia2/error/069_int_bool.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool = 42
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/070_char_boolA.xi b/tests/pracownia2/error/070_char_boolA.xi
new file mode 100644
index 0000000..9eab250
--- /dev/null
+++ b/tests/pracownia2/error/070_char_boolA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool[] = 'X'
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/071_procedure_used_as_function_whilecond.xi b/tests/pracownia2/error/071_procedure_used_as_function_whilecond.xi
new file mode 100644
index 0000000..d60f7b6
--- /dev/null
+++ b/tests/pracownia2/error/071_procedure_used_as_function_whilecond.xi
@@ -0,0 +1,9 @@
+f()
+
+g()
+{
+    while f() {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/072_if_cond_int.xi b/tests/pracownia2/error/072_if_cond_int.xi
new file mode 100644
index 0000000..8822d65
--- /dev/null
+++ b/tests/pracownia2/error/072_if_cond_int.xi
@@ -0,0 +1,7 @@
+test(x:int)
+{
+    if x {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/073_comp_le_boolA.xi b/tests/pracownia2/error/073_comp_le_boolA.xi
new file mode 100644
index 0000000..83674a0
--- /dev/null
+++ b/tests/pracownia2/error/073_comp_le_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:int[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/074_expecting2_given1.xi b/tests/pracownia2/error/074_expecting2_given1.xi
new file mode 100644
index 0000000..594aff7
--- /dev/null
+++ b/tests/pracownia2/error/074_expecting2_given1.xi
@@ -0,0 +1,6 @@
+f():int,int
+{
+    return 1
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/075_shadowing_decl_return_type.xi b/tests/pracownia2/error/075_shadowing_decl_return_type.xi
new file mode 100644
index 0000000..42ebd02
--- /dev/null
+++ b/tests/pracownia2/error/075_shadowing_decl_return_type.xi
@@ -0,0 +1,5 @@
+f(x:int) : int
+f(x:int) : bool
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/076_intA_index.xi b/tests/pracownia2/error/076_intA_index.xi
new file mode 100644
index 0000000..cc43ec4
--- /dev/null
+++ b/tests/pracownia2/error/076_intA_index.xi
@@ -0,0 +1,7 @@
+test(a:int[])
+{
+    i:int[];
+    a[i] = 1;
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/077_procedure_too_many_args_expect0.xi b/tests/pracownia2/error/077_procedure_too_many_args_expect0.xi
new file mode 100644
index 0000000..dec5d8f
--- /dev/null
+++ b/tests/pracownia2/error/077_procedure_too_many_args_expect0.xi
@@ -0,0 +1,8 @@
+f()
+
+g()
+{
+    f(1, 2)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/078_true_int.xi b/tests/pracownia2/error/078_true_int.xi
new file mode 100644
index 0000000..4ee78d7
--- /dev/null
+++ b/tests/pracownia2/error/078_true_int.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int = true
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/079_comp_gt_boolA_intA.xi b/tests/pracownia2/error/079_comp_gt_boolA_intA.xi
new file mode 100644
index 0000000..de19bee
--- /dev/null
+++ b/tests/pracownia2/error/079_comp_gt_boolA_intA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:int[]):bool
+{
+  return a > b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/080_int_intA.xi b/tests/pracownia2/error/080_int_intA.xi
new file mode 100644
index 0000000..7569fe3
--- /dev/null
+++ b/tests/pracownia2/error/080_int_intA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int[] = 42
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/081_procedure_too_less_args_expect1.xi b/tests/pracownia2/error/081_procedure_too_less_args_expect1.xi
new file mode 100644
index 0000000..0931f48
--- /dev/null
+++ b/tests/pracownia2/error/081_procedure_too_less_args_expect1.xi
@@ -0,0 +1,8 @@
+f(x:int)
+
+g()
+{
+    f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/082_function_missing_return_while_return.xi b/tests/pracownia2/error/082_function_missing_return_while_return.xi
new file mode 100644
index 0000000..b7dd972
--- /dev/null
+++ b/tests/pracownia2/error/082_function_missing_return_while_return.xi
@@ -0,0 +1,8 @@
+f(x:bool):int
+{
+    while x {
+        return 0
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/083_shadowing_decl_other_fpartype.xi b/tests/pracownia2/error/083_shadowing_decl_other_fpartype.xi
new file mode 100644
index 0000000..fbd8682
--- /dev/null
+++ b/tests/pracownia2/error/083_shadowing_decl_other_fpartype.xi
@@ -0,0 +1,5 @@
+f(x:int)
+f(x:bool)
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/084_init2_boolA_snd.xi b/tests/pracownia2/error/084_init2_boolA_snd.xi
new file mode 100644
index 0000000..ce9aac3
--- /dev/null
+++ b/tests/pracownia2/error/084_init2_boolA_snd.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool[];
+    a:int[42][i];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/085_expecting2_given_proc.xi b/tests/pracownia2/error/085_expecting2_given_proc.xi
new file mode 100644
index 0000000..d39d103
--- /dev/null
+++ b/tests/pracownia2/error/085_expecting2_given_proc.xi
@@ -0,0 +1,8 @@
+g()
+
+f():int,int
+{
+    return g()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/086_function_missing_return_ifelse_then_return.xi b/tests/pracownia2/error/086_function_missing_return_ifelse_then_return.xi
new file mode 100644
index 0000000..df596c5
--- /dev/null
+++ b/tests/pracownia2/error/086_function_missing_return_ifelse_then_return.xi
@@ -0,0 +1,9 @@
+f(x:bool):int
+{
+    if (x) {
+        return 0
+    } else {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/087_comp_ge_bool.xi b/tests/pracownia2/error/087_comp_ge_bool.xi
new file mode 100644
index 0000000..ecf351f
--- /dev/null
+++ b/tests/pracownia2/error/087_comp_ge_bool.xi
@@ -0,0 +1,7 @@
+test(a:bool, b:bool):bool
+{
+  return a >= b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/088_init2_intA_fst_only.xi b/tests/pracownia2/error/088_init2_intA_fst_only.xi
new file mode 100644
index 0000000..ba1bb06
--- /dev/null
+++ b/tests/pracownia2/error/088_init2_intA_fst_only.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:int[];
+    a:int[i][];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/089_comp_le_boolA_intA.xi b/tests/pracownia2/error/089_comp_le_boolA_intA.xi
new file mode 100644
index 0000000..631bed1
--- /dev/null
+++ b/tests/pracownia2/error/089_comp_le_boolA_intA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:int[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/090_expected_2_given3_joker.xi b/tests/pracownia2/error/090_expected_2_given3_joker.xi
new file mode 100644
index 0000000..47373fa
--- /dev/null
+++ b/tests/pracownia2/error/090_expected_2_given3_joker.xi
@@ -0,0 +1,8 @@
+f(): int, int, int
+
+g()
+{
+    x:int, _ = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/091_function_missing_return_while_simple.xi b/tests/pracownia2/error/091_function_missing_return_while_simple.xi
new file mode 100644
index 0000000..0e3743f
--- /dev/null
+++ b/tests/pracownia2/error/091_function_missing_return_while_simple.xi
@@ -0,0 +1,7 @@
+f(x:bool):int
+{
+    while x {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/092_expected_2_given1.xi b/tests/pracownia2/error/092_expected_2_given1.xi
new file mode 100644
index 0000000..f923012
--- /dev/null
+++ b/tests/pracownia2/error/092_expected_2_given1.xi
@@ -0,0 +1,8 @@
+f(): int
+
+g()
+{
+    x:int, y:int = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/093_init2_intA_snd.xi b/tests/pracownia2/error/093_init2_intA_snd.xi
new file mode 100644
index 0000000..6a82e3b
--- /dev/null
+++ b/tests/pracownia2/error/093_init2_intA_snd.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:int[];
+    a:int[42][i];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/094_while_cond_boolA.xi b/tests/pracownia2/error/094_while_cond_boolA.xi
new file mode 100644
index 0000000..47cde1a
--- /dev/null
+++ b/tests/pracownia2/error/094_while_cond_boolA.xi
@@ -0,0 +1,7 @@
+test(x:bool[])
+{
+    while x {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/095_mult_trueture.xi b/tests/pracownia2/error/095_mult_trueture.xi
new file mode 100644
index 0000000..9798982
--- /dev/null
+++ b/tests/pracownia2/error/095_mult_trueture.xi
@@ -0,0 +1,7 @@
+f():bool
+{
+    return true - true
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/096_procedure_used_in_return_in_procedure.xi b/tests/pracownia2/error/096_procedure_used_in_return_in_procedure.xi
new file mode 100644
index 0000000..1f78f7f
--- /dev/null
+++ b/tests/pracownia2/error/096_procedure_used_in_return_in_procedure.xi
@@ -0,0 +1,9 @@
+f()
+
+g()
+{
+    return f()
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/097_init2_bool_fst_only.xi b/tests/pracownia2/error/097_init2_bool_fst_only.xi
new file mode 100644
index 0000000..6ee7634
--- /dev/null
+++ b/tests/pracownia2/error/097_init2_bool_fst_only.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool;
+    a:int[i][];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/098_true_boolA.xi b/tests/pracownia2/error/098_true_boolA.xi
new file mode 100644
index 0000000..eff0d8d
--- /dev/null
+++ b/tests/pracownia2/error/098_true_boolA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool[] = true
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/099_variables_nested_scope.xi b/tests/pracownia2/error/099_variables_nested_scope.xi
new file mode 100644
index 0000000..b863101
--- /dev/null
+++ b/tests/pracownia2/error/099_variables_nested_scope.xi
@@ -0,0 +1,9 @@
+test()
+{
+    x:int
+    {
+        x:bool
+    } 
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/100_string_int.xi b/tests/pracownia2/error/100_string_int.xi
new file mode 100644
index 0000000..cc048d4
--- /dev/null
+++ b/tests/pracownia2/error/100_string_int.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int = "Polonia"
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/101_init_intA.xi b/tests/pracownia2/error/101_init_intA.xi
new file mode 100644
index 0000000..1d0823f
--- /dev/null
+++ b/tests/pracownia2/error/101_init_intA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:int[];
+    a:int[i];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/102_ifelse_cond_int.xi b/tests/pracownia2/error/102_ifelse_cond_int.xi
new file mode 100644
index 0000000..8822d65
--- /dev/null
+++ b/tests/pracownia2/error/102_ifelse_cond_int.xi
@@ -0,0 +1,7 @@
+test(x:int)
+{
+    if x {
+    }
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/103_comp_gt_boolA.xi b/tests/pracownia2/error/103_comp_gt_boolA.xi
new file mode 100644
index 0000000..db28717
--- /dev/null
+++ b/tests/pracownia2/error/103_comp_gt_boolA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:bool[]):bool
+{
+  return a > b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/104_plus_trueture.xi b/tests/pracownia2/error/104_plus_trueture.xi
new file mode 100644
index 0000000..44ddced
--- /dev/null
+++ b/tests/pracownia2/error/104_plus_trueture.xi
@@ -0,0 +1,7 @@
+f():bool
+{
+    return true + true
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/105_true_intA.xi b/tests/pracownia2/error/105_true_intA.xi
new file mode 100644
index 0000000..3db313a
--- /dev/null
+++ b/tests/pracownia2/error/105_true_intA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int[] = true
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/106_length_as_intA.xi b/tests/pracownia2/error/106_length_as_intA.xi
new file mode 100644
index 0000000..7d29ad2
--- /dev/null
+++ b/tests/pracownia2/error/106_length_as_intA.xi
@@ -0,0 +1,6 @@
+test(x:int[]):int[]
+{
+    return length(x)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/107_variables_nested_scope_ifelse.xi b/tests/pracownia2/error/107_variables_nested_scope_ifelse.xi
new file mode 100644
index 0000000..a7b0cb6
--- /dev/null
+++ b/tests/pracownia2/error/107_variables_nested_scope_ifelse.xi
@@ -0,0 +1,10 @@
+test()
+{
+    x:int
+    if true {
+    } else {
+        x:bool
+    } 
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/108_bool_as_A_from_A.xi b/tests/pracownia2/error/108_bool_as_A_from_A.xi
new file mode 100644
index 0000000..15c1e4b
--- /dev/null
+++ b/tests/pracownia2/error/108_bool_as_A_from_A.xi
@@ -0,0 +1,6 @@
+test(x:bool[])
+{
+    x[0][0] = true;
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/109_return_type_initialized_array.xi b/tests/pracownia2/error/109_return_type_initialized_array.xi
new file mode 100644
index 0000000..29b7141
--- /dev/null
+++ b/tests/pracownia2/error/109_return_type_initialized_array.xi
@@ -0,0 +1,4 @@
+test():int[42]
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/110_expecting2_given3.xi b/tests/pracownia2/error/110_expecting2_given3.xi
new file mode 100644
index 0000000..306595d
--- /dev/null
+++ b/tests/pracownia2/error/110_expecting2_given3.xi
@@ -0,0 +1,6 @@
+f():int,int
+{
+    return 1,2,3
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/111_variables_nested_scope_while.xi b/tests/pracownia2/error/111_variables_nested_scope_while.xi
new file mode 100644
index 0000000..b0d1936
--- /dev/null
+++ b/tests/pracownia2/error/111_variables_nested_scope_while.xi
@@ -0,0 +1,9 @@
+test()
+{
+    x:int
+    while true {
+        x:bool
+    } 
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/112_comp_lt_intA_boolA.xi b/tests/pracownia2/error/112_comp_lt_intA_boolA.xi
new file mode 100644
index 0000000..333e826
--- /dev/null
+++ b/tests/pracownia2/error/112_comp_lt_intA_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:bool[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/113_missing_multireturn.xi b/tests/pracownia2/error/113_missing_multireturn.xi
new file mode 100644
index 0000000..c2262f9
--- /dev/null
+++ b/tests/pracownia2/error/113_missing_multireturn.xi
@@ -0,0 +1,5 @@
+f():int,int
+{
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/114_return_multireturn_func_not_allowed.xi b/tests/pracownia2/error/114_return_multireturn_func_not_allowed.xi
new file mode 100644
index 0000000..07345d9
--- /dev/null
+++ b/tests/pracownia2/error/114_return_multireturn_func_not_allowed.xi
@@ -0,0 +1,8 @@
+g():int,int
+
+f():int,int
+{
+    return g()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/115_expecting2_given0.xi b/tests/pracownia2/error/115_expecting2_given0.xi
new file mode 100644
index 0000000..b773933
--- /dev/null
+++ b/tests/pracownia2/error/115_expecting2_given0.xi
@@ -0,0 +1,6 @@
+f():int,int
+{
+    return
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/116_length_int.xi b/tests/pracownia2/error/116_length_int.xi
new file mode 100644
index 0000000..b491aa1
--- /dev/null
+++ b/tests/pracownia2/error/116_length_int.xi
@@ -0,0 +1,6 @@
+test(x:int):int
+{
+    return length(x)
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/117_comp_le_boolA.xi b/tests/pracownia2/error/117_comp_le_boolA.xi
new file mode 100644
index 0000000..c55d624
--- /dev/null
+++ b/tests/pracownia2/error/117_comp_le_boolA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:bool[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/118_variables_nested_scope_if.xi b/tests/pracownia2/error/118_variables_nested_scope_if.xi
new file mode 100644
index 0000000..655caa9
--- /dev/null
+++ b/tests/pracownia2/error/118_variables_nested_scope_if.xi
@@ -0,0 +1,9 @@
+test()
+{
+    x:int
+    if true {
+        x:bool
+    } 
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/119_comp_lt_boolA_intA.xi b/tests/pracownia2/error/119_comp_lt_boolA_intA.xi
new file mode 100644
index 0000000..631bed1
--- /dev/null
+++ b/tests/pracownia2/error/119_comp_lt_boolA_intA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:int[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/120_formal_pars_def_other_type.xi b/tests/pracownia2/error/120_formal_pars_def_other_type.xi
new file mode 100644
index 0000000..f9dcade
--- /dev/null
+++ b/tests/pracownia2/error/120_formal_pars_def_other_type.xi
@@ -0,0 +1,6 @@
+test(x:int, x:int[], y:bool)
+{
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/121_comp_ge_boolA_intA.xi b/tests/pracownia2/error/121_comp_ge_boolA_intA.xi
new file mode 100644
index 0000000..a112dd5
--- /dev/null
+++ b/tests/pracownia2/error/121_comp_ge_boolA_intA.xi
@@ -0,0 +1,7 @@
+test(a:bool[], b:int[]):bool
+{
+  return a >= b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/122_init_boolA.xi b/tests/pracownia2/error/122_init_boolA.xi
new file mode 100644
index 0000000..4a3f027
--- /dev/null
+++ b/tests/pracownia2/error/122_init_boolA.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool[];
+    a:int[i];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/123_comp_ge_intA_boolA.xi b/tests/pracownia2/error/123_comp_ge_intA_boolA.xi
new file mode 100644
index 0000000..a6b066e
--- /dev/null
+++ b/tests/pracownia2/error/123_comp_ge_intA_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:bool[]):bool
+{
+  return a >= b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/124_init2_bool_fst.xi b/tests/pracownia2/error/124_init2_bool_fst.xi
new file mode 100644
index 0000000..462eeee
--- /dev/null
+++ b/tests/pracownia2/error/124_init2_bool_fst.xi
@@ -0,0 +1,7 @@
+test()
+{
+    i:bool;
+    a:int[i][42];
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/125_expected_2_given0_joker.xi b/tests/pracownia2/error/125_expected_2_given0_joker.xi
new file mode 100644
index 0000000..96a8e35
--- /dev/null
+++ b/tests/pracownia2/error/125_expected_2_given0_joker.xi
@@ -0,0 +1,8 @@
+f()
+
+g()
+{
+    x:int, _ = f()
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/126_return_type_initialized_array_multidim.xi b/tests/pracownia2/error/126_return_type_initialized_array_multidim.xi
new file mode 100644
index 0000000..0dfa847
--- /dev/null
+++ b/tests/pracownia2/error/126_return_type_initialized_array_multidim.xi
@@ -0,0 +1,4 @@
+test():int[][42][]
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/127_formal_arg_initialized_array_multidim.xi b/tests/pracownia2/error/127_formal_arg_initialized_array_multidim.xi
new file mode 100644
index 0000000..053528f
--- /dev/null
+++ b/tests/pracownia2/error/127_formal_arg_initialized_array_multidim.xi
@@ -0,0 +1,5 @@
+test(x:int[][43][])
+{
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/128_div_trueture.xi b/tests/pracownia2/error/128_div_trueture.xi
new file mode 100644
index 0000000..1f0da71
--- /dev/null
+++ b/tests/pracownia2/error/128_div_trueture.xi
@@ -0,0 +1,7 @@
+f():bool
+{
+    return true / true
+}
+
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/129_string_bool.xi b/tests/pracownia2/error/129_string_bool.xi
new file mode 100644
index 0000000..c983fc4
--- /dev/null
+++ b/tests/pracownia2/error/129_string_bool.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:bool[] = "Polonia"
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/130_comp_lt_boolA.xi b/tests/pracownia2/error/130_comp_lt_boolA.xi
new file mode 100644
index 0000000..83674a0
--- /dev/null
+++ b/tests/pracownia2/error/130_comp_lt_boolA.xi
@@ -0,0 +1,7 @@
+test(a:int[], b:int[]):bool
+{
+  return a < b
+}
+//@PRACOWNIA
+//@stop_after typechecker
+//@should_not_typecheck
diff --git a/tests/pracownia2/error/131_variables_same_scope.xi b/tests/pracownia2/error/131_variables_same_scope.xi
new file mode 100644
index 0000000..8cdf9e3
--- /dev/null
+++ b/tests/pracownia2/error/131_variables_same_scope.xi
@@ -0,0 +1,7 @@
+test()
+{
+    x:int
+    x:bool
+}
+//@PRACOWNIA
+//@should_not_typecheck
diff --git a/tests/pracownia2/ok/000_without_expectation_concat_second_magic.xi b/tests/pracownia2/ok/000_without_expectation_concat_second_magic.xi
new file mode 100644
index 0000000..24a40c1
--- /dev/null
+++ b/tests/pracownia2/ok/000_without_expectation_concat_second_magic.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length({true} + {}[0])
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/001_ifelse_on_pred.xi b/tests/pracownia2/ok/001_ifelse_on_pred.xi
new file mode 100644
index 0000000..4cab2c4
--- /dev/null
+++ b/tests/pracownia2/ok/001_ifelse_on_pred.xi
@@ -0,0 +1,10 @@
+pred():bool
+test()
+{
+    if pred() {
+    } else {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/002_fetch_int.xi b/tests/pracownia2/ok/002_fetch_int.xi
new file mode 100644
index 0000000..447cba9
--- /dev/null
+++ b/tests/pracownia2/ok/002_fetch_int.xi
@@ -0,0 +1,7 @@
+test(x:int[]):int
+{
+    return x[15]
+}
+//@PRACOWNIA
+//@stop_after typechecker
+
diff --git a/tests/pracownia2/ok/003_with_expectation_concat_second_empty.xi b/tests/pracownia2/ok/003_with_expectation_concat_second_empty.xi
new file mode 100644
index 0000000..1844c7c
--- /dev/null
+++ b/tests/pracownia2/ok/003_with_expectation_concat_second_empty.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {true} + {}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/004_with_expectation_empty_curly.xi b/tests/pracownia2/ok/004_with_expectation_empty_curly.xi
new file mode 100644
index 0000000..30b9ff6
--- /dev/null
+++ b/tests/pracownia2/ok/004_with_expectation_empty_curly.xi
@@ -0,0 +1,7 @@
+test():bool[]
+{
+    return {}
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/005_with_expectation_concat_second_magic.xi b/tests/pracownia2/ok/005_with_expectation_concat_second_magic.xi
new file mode 100644
index 0000000..e3bec49
--- /dev/null
+++ b/tests/pracownia2/ok/005_with_expectation_concat_second_magic.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {true} + {}[0]
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/006_if_on_literal.xi b/tests/pracownia2/ok/006_if_on_literal.xi
new file mode 100644
index 0000000..cd1d2bd
--- /dev/null
+++ b/tests/pracownia2/ok/006_if_on_literal.xi
@@ -0,0 +1,8 @@
+test()
+{
+    if true {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/007_without_expectation_concat_second_weird.xi b/tests/pracownia2/ok/007_without_expectation_concat_second_weird.xi
new file mode 100644
index 0000000..377b7bf
--- /dev/null
+++ b/tests/pracownia2/ok/007_without_expectation_concat_second_weird.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length({true} + {{}[0]})
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/008_fetch_fetch.xi b/tests/pracownia2/ok/008_fetch_fetch.xi
new file mode 100644
index 0000000..ad01d39
--- /dev/null
+++ b/tests/pracownia2/ok/008_fetch_fetch.xi
@@ -0,0 +1,7 @@
+test(x:int[][]):int
+{
+    return x[1][2]
+}
+//@PRACOWNIA
+//@stop_after typechecker
+
diff --git a/tests/pracownia2/ok/009_while_on_literal.xi b/tests/pracownia2/ok/009_while_on_literal.xi
new file mode 100644
index 0000000..0bc0458
--- /dev/null
+++ b/tests/pracownia2/ok/009_while_on_literal.xi
@@ -0,0 +1,8 @@
+test()
+{
+    while true {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/010_with_expectation_concat_first_weird.xi b/tests/pracownia2/ok/010_with_expectation_concat_first_weird.xi
new file mode 100644
index 0000000..1aa4ac2
--- /dev/null
+++ b/tests/pracownia2/ok/010_with_expectation_concat_first_weird.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {{}[0]} + {true}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/011_simple_length.xi b/tests/pracownia2/ok/011_simple_length.xi
new file mode 100644
index 0000000..629bf19
--- /dev/null
+++ b/tests/pracownia2/ok/011_simple_length.xi
@@ -0,0 +1,6 @@
+test(x:bool[]):int
+{
+    return length(x)
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/012_with_expectation_concat_first_magic.xi b/tests/pracownia2/ok/012_with_expectation_concat_first_magic.xi
new file mode 100644
index 0000000..62b3626
--- /dev/null
+++ b/tests/pracownia2/ok/012_with_expectation_concat_first_magic.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {}[0] + {true}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/013_without_expectation_concat_second_empty.xi b/tests/pracownia2/ok/013_without_expectation_concat_second_empty.xi
new file mode 100644
index 0000000..b294650
--- /dev/null
+++ b/tests/pracownia2/ok/013_without_expectation_concat_second_empty.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length({true} + {})
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/014_if_on_var.xi b/tests/pracownia2/ok/014_if_on_var.xi
new file mode 100644
index 0000000..b69eaf2
--- /dev/null
+++ b/tests/pracownia2/ok/014_if_on_var.xi
@@ -0,0 +1,8 @@
+test(x:bool)
+{
+    if x {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/015_with_expectation_concat_second_weird.xi b/tests/pracownia2/ok/015_with_expectation_concat_second_weird.xi
new file mode 100644
index 0000000..c7993e3
--- /dev/null
+++ b/tests/pracownia2/ok/015_with_expectation_concat_second_weird.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {true} + {{}[0]}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/016_with_expectation_a_lot_of_magic_int.xi b/tests/pracownia2/ok/016_with_expectation_a_lot_of_magic_int.xi
new file mode 100644
index 0000000..d73c4c6
--- /dev/null
+++ b/tests/pracownia2/ok/016_with_expectation_a_lot_of_magic_int.xi
@@ -0,0 +1,40 @@
+consumer1(x:int[])
+consumer2(x:int[][])
+consumer3(x:int[][][])
+ 
+test()
+{
+    consumer1(
+        { {{}[0]}[0]
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer2(
+        { {{}[0]}[0]
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer2(
+        { { {{}[0]}[0]   }
+        , { {}[0]        }
+        , { {}[0][0][0]  }
+        })
+    consumer3(
+        { {{}[0]}[0]
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer3(
+        { { {{}[0]}[0]  }
+        , { {}[0]       }
+        , { {}[0][0][0] }
+        })
+    consumer3(
+        { { { {{}[0]}[0]  } }
+        , { { {}[0]       } }
+        , { { {}[0][0][0] } }
+        })
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/017_ifelse_on_and.xi b/tests/pracownia2/ok/017_ifelse_on_and.xi
new file mode 100644
index 0000000..5ac374e
--- /dev/null
+++ b/tests/pracownia2/ok/017_ifelse_on_and.xi
@@ -0,0 +1,9 @@
+test()
+{
+    if true & false {
+    } else {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/018_if_on_pred.xi b/tests/pracownia2/ok/018_if_on_pred.xi
new file mode 100644
index 0000000..1bc8917
--- /dev/null
+++ b/tests/pracownia2/ok/018_if_on_pred.xi
@@ -0,0 +1,9 @@
+pred():bool
+test()
+{
+    if pred() {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/019_ifelse_on_or.xi b/tests/pracownia2/ok/019_ifelse_on_or.xi
new file mode 100644
index 0000000..451ce2e
--- /dev/null
+++ b/tests/pracownia2/ok/019_ifelse_on_or.xi
@@ -0,0 +1,9 @@
+test()
+{
+    if true | false {
+    } else {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/020_with_expectation_concat_both_empty.xi b/tests/pracownia2/ok/020_with_expectation_concat_both_empty.xi
new file mode 100644
index 0000000..a14097b
--- /dev/null
+++ b/tests/pracownia2/ok/020_with_expectation_concat_both_empty.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {} + {}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/021_mutualrec.xi b/tests/pracownia2/ok/021_mutualrec.xi
new file mode 100644
index 0000000..26d1b5b
--- /dev/null
+++ b/tests/pracownia2/ok/021_mutualrec.xi
@@ -0,0 +1,12 @@
+
+f(): int {
+    return g()
+}
+
+
+g(): int {
+    return f()
+}
+
+//@PRACOWNIA
+//@stop_after parser
diff --git a/tests/pracownia2/ok/022_int.xi b/tests/pracownia2/ok/022_int.xi
new file mode 100644
index 0000000..ae97ae7
--- /dev/null
+++ b/tests/pracownia2/ok/022_int.xi
@@ -0,0 +1,10 @@
+test()
+{
+    x:int = 1
+    x = 42
+    x = 'a'
+}    
+
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/023_with_expectation_concat_both_magic.xi b/tests/pracownia2/ok/023_with_expectation_concat_both_magic.xi
new file mode 100644
index 0000000..b30b3bd
--- /dev/null
+++ b/tests/pracownia2/ok/023_with_expectation_concat_both_magic.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {}[0] + {}[0]
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/024_store_bool.xi b/tests/pracownia2/ok/024_store_bool.xi
new file mode 100644
index 0000000..5991605
--- /dev/null
+++ b/tests/pracownia2/ok/024_store_bool.xi
@@ -0,0 +1,6 @@
+test(x:bool[])
+{
+    x[15] = true
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/025_with_expectation_concat_magic_empty.xi b/tests/pracownia2/ok/025_with_expectation_concat_magic_empty.xi
new file mode 100644
index 0000000..9a00030
--- /dev/null
+++ b/tests/pracownia2/ok/025_with_expectation_concat_magic_empty.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {}[0] + {}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/026_length_string.xi b/tests/pracownia2/ok/026_length_string.xi
new file mode 100644
index 0000000..acef6a4
--- /dev/null
+++ b/tests/pracownia2/ok/026_length_string.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length("Klucze do domu")
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/027_with_expectation_curly_elems.xi b/tests/pracownia2/ok/027_with_expectation_curly_elems.xi
new file mode 100644
index 0000000..eb407c1
--- /dev/null
+++ b/tests/pracownia2/ok/027_with_expectation_curly_elems.xi
@@ -0,0 +1,7 @@
+test():bool[]
+{
+    return {true, false, true}
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/028_while_on_and.xi b/tests/pracownia2/ok/028_while_on_and.xi
new file mode 100644
index 0000000..cf00ff1
--- /dev/null
+++ b/tests/pracownia2/ok/028_while_on_and.xi
@@ -0,0 +1,8 @@
+test()
+{
+    while true & false {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/029_with_expectation_concat_empty_weird.xi b/tests/pracownia2/ok/029_with_expectation_concat_empty_weird.xi
new file mode 100644
index 0000000..e361865
--- /dev/null
+++ b/tests/pracownia2/ok/029_with_expectation_concat_empty_weird.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {} + {{}[0]}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/030_intA.xi b/tests/pracownia2/ok/030_intA.xi
new file mode 100644
index 0000000..3c052aa
--- /dev/null
+++ b/tests/pracownia2/ok/030_intA.xi
@@ -0,0 +1,8 @@
+test()
+{
+    x:int[] = "University"
+    x = "of Wroclaw"
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/031_if_on_or.xi b/tests/pracownia2/ok/031_if_on_or.xi
new file mode 100644
index 0000000..5ee0e99
--- /dev/null
+++ b/tests/pracownia2/ok/031_if_on_or.xi
@@ -0,0 +1,8 @@
+test()
+{
+    if true | false {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/032_with_expectation_first_weird.xi b/tests/pracownia2/ok/032_with_expectation_first_weird.xi
new file mode 100644
index 0000000..b25485a
--- /dev/null
+++ b/tests/pracownia2/ok/032_with_expectation_first_weird.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {{}[0], false, true}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/033_with_expectation_concat_weird_empty.xi b/tests/pracownia2/ok/033_with_expectation_concat_weird_empty.xi
new file mode 100644
index 0000000..86a956b
--- /dev/null
+++ b/tests/pracownia2/ok/033_with_expectation_concat_weird_empty.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {{}[0]} + {}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/034_bool.xi b/tests/pracownia2/ok/034_bool.xi
new file mode 100644
index 0000000..ebf7565
--- /dev/null
+++ b/tests/pracownia2/ok/034_bool.xi
@@ -0,0 +1,8 @@
+test()
+{
+    x:bool = true
+    x = false
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/035_store_store.xi b/tests/pracownia2/ok/035_store_store.xi
new file mode 100644
index 0000000..8af586b
--- /dev/null
+++ b/tests/pracownia2/ok/035_store_store.xi
@@ -0,0 +1,6 @@
+test(x:bool[][])
+{
+    x[0][1] = true
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/036_ifelse_on_var.xi b/tests/pracownia2/ok/036_ifelse_on_var.xi
new file mode 100644
index 0000000..e906f81
--- /dev/null
+++ b/tests/pracownia2/ok/036_ifelse_on_var.xi
@@ -0,0 +1,9 @@
+test(x:bool)
+{
+    if x {
+    } else {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/037_with_expectation_concat.xi b/tests/pracownia2/ok/037_with_expectation_concat.xi
new file mode 100644
index 0000000..402e822
--- /dev/null
+++ b/tests/pracownia2/ok/037_with_expectation_concat.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {false, true} + {true, false}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/038_length_curly.xi b/tests/pracownia2/ok/038_length_curly.xi
new file mode 100644
index 0000000..7aae6bd
--- /dev/null
+++ b/tests/pracownia2/ok/038_length_curly.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length({true, false})
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/039_if_on_and.xi b/tests/pracownia2/ok/039_if_on_and.xi
new file mode 100644
index 0000000..bff5231
--- /dev/null
+++ b/tests/pracownia2/ok/039_if_on_and.xi
@@ -0,0 +1,8 @@
+test()
+{
+    if true & false {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/040_while_on_var.xi b/tests/pracownia2/ok/040_while_on_var.xi
new file mode 100644
index 0000000..881cc76
--- /dev/null
+++ b/tests/pracownia2/ok/040_while_on_var.xi
@@ -0,0 +1,8 @@
+test(x:bool)
+{
+    while x {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/041_without_expectation_concat.xi b/tests/pracownia2/ok/041_without_expectation_concat.xi
new file mode 100644
index 0000000..bb368db
--- /dev/null
+++ b/tests/pracownia2/ok/041_without_expectation_concat.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length({false, true} + {true, false})
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/042_init.xi b/tests/pracownia2/ok/042_init.xi
new file mode 100644
index 0000000..3f5c86f
--- /dev/null
+++ b/tests/pracownia2/ok/042_init.xi
@@ -0,0 +1,6 @@
+test()
+{
+    a:int[42][];
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/043_without_expectation_second_weird.xi b/tests/pracownia2/ok/043_without_expectation_second_weird.xi
new file mode 100644
index 0000000..66997bf
--- /dev/null
+++ b/tests/pracownia2/ok/043_without_expectation_second_weird.xi
@@ -0,0 +1,6 @@
+test():int
+{
+    return length({false, {{}}[0][0], true})
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/044_while_on_or.xi b/tests/pracownia2/ok/044_while_on_or.xi
new file mode 100644
index 0000000..bf80140
--- /dev/null
+++ b/tests/pracownia2/ok/044_while_on_or.xi
@@ -0,0 +1,8 @@
+test()
+{
+    while true | false {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/045_with_expectation_second_weird.xi b/tests/pracownia2/ok/045_with_expectation_second_weird.xi
new file mode 100644
index 0000000..26f7d74
--- /dev/null
+++ b/tests/pracownia2/ok/045_with_expectation_second_weird.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {false, {{}}[0][0], true}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/046_with_expectation_concat_first_empty.xi b/tests/pracownia2/ok/046_with_expectation_concat_first_empty.xi
new file mode 100644
index 0000000..c9b0b43
--- /dev/null
+++ b/tests/pracownia2/ok/046_with_expectation_concat_first_empty.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {} + {true}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/047_with_expectation_concat_empty_magic.xi b/tests/pracownia2/ok/047_with_expectation_concat_empty_magic.xi
new file mode 100644
index 0000000..92dc19e
--- /dev/null
+++ b/tests/pracownia2/ok/047_with_expectation_concat_empty_magic.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {} + {}[0]
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/048_noconflict_other_scopes.xi b/tests/pracownia2/ok/048_noconflict_other_scopes.xi
new file mode 100644
index 0000000..788c5ee
--- /dev/null
+++ b/tests/pracownia2/ok/048_noconflict_other_scopes.xi
@@ -0,0 +1,11 @@
+test(x:bool)
+{
+    if x {
+        y:int
+    } else {
+        y:int[]
+    }
+}
+//@PRACOWNIA
+//@stop_after typechecker
+
diff --git a/tests/pracownia2/ok/049_ifelse_on_literal.xi b/tests/pracownia2/ok/049_ifelse_on_literal.xi
new file mode 100644
index 0000000..abae0f2
--- /dev/null
+++ b/tests/pracownia2/ok/049_ifelse_on_literal.xi
@@ -0,0 +1,9 @@
+test()
+{
+    if true {
+    } else {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/050_without_expectation_curly_elems.xi b/tests/pracownia2/ok/050_without_expectation_curly_elems.xi
new file mode 100644
index 0000000..246c002
--- /dev/null
+++ b/tests/pracownia2/ok/050_without_expectation_curly_elems.xi
@@ -0,0 +1,7 @@
+test():int
+{
+    return length({true, false, true})
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/051_while_on_pred.xi b/tests/pracownia2/ok/051_while_on_pred.xi
new file mode 100644
index 0000000..9167206
--- /dev/null
+++ b/tests/pracownia2/ok/051_while_on_pred.xi
@@ -0,0 +1,9 @@
+pred():bool
+test()
+{
+    while pred() {
+    }
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/052_with_expectation_a_lot_of_magic_bool.xi b/tests/pracownia2/ok/052_with_expectation_a_lot_of_magic_bool.xi
new file mode 100644
index 0000000..3400fbc
--- /dev/null
+++ b/tests/pracownia2/ok/052_with_expectation_a_lot_of_magic_bool.xi
@@ -0,0 +1,60 @@
+consumer1(x:bool[])
+consumer2(x:bool[][])
+consumer3(x:bool[][][])
+ 
+test()
+{
+    consumer1(
+        { {{}[0]}[0]
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer2(
+        { {{}[0]}[0]
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer2(
+        { { {{}[0]}[0] }
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer2(
+        { {{}[0]}[0]
+        , { {}[0] }
+        , {}[0][0][0]
+        })
+    consumer2(
+        { {{}[0]}[0]
+        , {}[0]
+        , { {}[0][0][0] }
+        })
+    consumer2(
+        { { {{}[0]}[0]   }
+        , { {}[0]        }
+        , { {}[0][0][0]  }
+        })
+    consumer3(
+        { {{}[0]}[0]
+        , {}[0]
+        , {}[0][0][0]
+        })
+    consumer3(
+        { { {{}[0]}[0]  }
+        , { {}[0]       }
+        , { {}[0][0][0] }
+        })
+    consumer3(
+        { {{}[0]}[0]
+        , {}[0]
+        , { {}[0][0][0] }
+        })
+    consumer3(
+        { { { {{}[0]}[0]  } }
+        , { { {}[0]       } }
+        , { { {}[0][0][0] } }
+        })
+}
+
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia2/ok/053_with_expectation_concat_both_weird.xi b/tests/pracownia2/ok/053_with_expectation_concat_both_weird.xi
new file mode 100644
index 0000000..28923a5
--- /dev/null
+++ b/tests/pracownia2/ok/053_with_expectation_concat_both_weird.xi
@@ -0,0 +1,6 @@
+test():bool[]
+{
+    return {{}[0]} + {{}[0]}
+}
+//@PRACOWNIA
+//@stop_after typechecker
diff --git a/tests/pracownia3/000_manyargs_3.xi b/tests/pracownia3/000_manyargs_3.xi
new file mode 100644
index 0000000..3e73ca9
--- /dev/null
+++ b/tests/pracownia3/000_manyargs_3.xi
@@ -0,0 +1,11 @@
+f(r0:int, r1:int, r2:int, r3:int, r4:int, r5:int, r6:int):int
+{
+    return r0 + r1 + r2 + r3 + r4 + r5 + r6
+}
+
+main():int {
+    return f(1, 2, 3, 4, 5, 6, 7)
+}
+
+//@PRACOWNIA
+//@out Exit code: 28
diff --git a/tests/pracownia3/001_or_01.xi b/tests/pracownia3/001_or_01.xi
new file mode 100644
index 0000000..42e3715
--- /dev/null
+++ b/tests/pracownia3/001_or_01.xi
@@ -0,0 +1,30 @@
+printString(str:int[])
+
+pred_lhs():bool
+{
+    printString("pred_lhs")
+    return false
+}
+
+pred_rhs():bool
+{
+    printString("pred_rhs")
+    return true
+}
+
+main():int
+{
+    result:int = 3
+    if pred_lhs() | pred_rhs() {
+        result = 1
+    } else {
+        result = 0
+    }
+
+    return result
+}
+
+//@PRACOWNIA
+//@out pred_lhs
+//@out pred_rhs
+//@out Exit code: 1
diff --git a/tests/pracownia3/002_list_empty.xi b/tests/pracownia3/002_list_empty.xi
new file mode 100644
index 0000000..a7a2c9d
--- /dev/null
+++ b/tests/pracownia3/002_list_empty.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {1,2,3}
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia3/003_concat_rhs_len.xi b/tests/pracownia3/003_concat_rhs_len.xi
new file mode 100644
index 0000000..5ab6e64
--- /dev/null
+++ b/tests/pracownia3/003_concat_rhs_len.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    z:int[] = {} + {100, 200}
+    return length(z)
+}
+
+//@PRACOWNIA
+//@out Exit code: 2
\ No newline at end of file
diff --git a/tests/pracownia3/004_return.xi b/tests/pracownia3/004_return.xi
new file mode 100644
index 0000000..a24d01a
--- /dev/null
+++ b/tests/pracownia3/004_return.xi
@@ -0,0 +1,12 @@
+return_4():int
+{
+  return 4
+}
+
+main():int
+{
+  return return_4()
+}
+
+//@PRACOWNIA
+//@out Exit code: 4
\ No newline at end of file
diff --git a/tests/pracownia3/005_multireturn_multiargs.xi b/tests/pracownia3/005_multireturn_multiargs.xi
new file mode 100644
index 0000000..96fbb57
--- /dev/null
+++ b/tests/pracownia3/005_multireturn_multiargs.xi
@@ -0,0 +1,12 @@
+f(a0:int, a1:int, a2:int, a3:int, a4:int, a5:int, a6:int): int, int, int, int, int, int, int
+{
+    return a0, a1, a2, a3, a4, a5, a6
+}
+
+main():int {
+    a0:int, a1:int, a2:int, a3:int, a4:int, a5:int, a6:int = f(10,20,30,40,50,60,70)
+    return a0+a1+a2+a3+a4+a5+a6
+}
+
+//@PRACOWNIA
+//@out Exit code: 280
diff --git a/tests/pracownia3/006_init_variable.xi b/tests/pracownia3/006_init_variable.xi
new file mode 100644
index 0000000..27940b7
--- /dev/null
+++ b/tests/pracownia3/006_init_variable.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int = 42;
+    return 13
+}
+
+//@PRACOWNIA
+//@out Exit code: 13
\ No newline at end of file
diff --git a/tests/pracownia3/007_mul_literals.xi b/tests/pracownia3/007_mul_literals.xi
new file mode 100644
index 0000000..4302efe
--- /dev/null
+++ b/tests/pracownia3/007_mul_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 4 * 3
+}
+
+//@PRACOWNIA
+//@out Exit code: 12
\ No newline at end of file
diff --git a/tests/pracownia3/008_fac_rec_0.xi b/tests/pracownia3/008_fac_rec_0.xi
new file mode 100644
index 0000000..45d5265
--- /dev/null
+++ b/tests/pracownia3/008_fac_rec_0.xi
@@ -0,0 +1,15 @@
+fac(x:int):int
+{
+    if (x == 0) {
+        return 1
+    }
+    return fac(x-1)*x
+}
+
+main():int
+{
+    return fac(0)
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
\ No newline at end of file
diff --git a/tests/pracownia3/009_while_while_sum.xi b/tests/pracownia3/009_while_while_sum.xi
new file mode 100644
index 0000000..abb029c
--- /dev/null
+++ b/tests/pracownia3/009_while_while_sum.xi
@@ -0,0 +1,18 @@
+main():int
+{
+    i:int = 0;
+    n:int = 10;
+    sum:int = 0;
+    while (i < n) {
+        j:int = 0
+        while (j < n) {
+            sum = sum + j
+            j = j + 1
+        }
+        i = i + 1
+    }
+    return sum
+}
+
+//@PRACOWNIA
+//@out Exit code: 450
\ No newline at end of file
diff --git a/tests/pracownia3/010_length_empty.xi b/tests/pracownia3/010_length_empty.xi
new file mode 100644
index 0000000..46b3025
--- /dev/null
+++ b/tests/pracownia3/010_length_empty.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {}
+    return length(x)
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia3/011_concat_string.xi b/tests/pracownia3/011_concat_string.xi
new file mode 100644
index 0000000..c245c05
--- /dev/null
+++ b/tests/pracownia3/011_concat_string.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = "Wro" + "claw"
+    return length(x)
+}
+
+//@PRACOWNIA
+//@out Exit code: 7
\ No newline at end of file
diff --git a/tests/pracownia3/012_multireturn_4.xi b/tests/pracownia3/012_multireturn_4.xi
new file mode 100644
index 0000000..7b1c7b7
--- /dev/null
+++ b/tests/pracownia3/012_multireturn_4.xi
@@ -0,0 +1,12 @@
+f(): int, int, int, int
+{
+    return 10, 15, 20, 25
+}
+
+main():int {
+    x:int, y:int, z:int, v:int = f()
+    return x + y + z + v;
+}
+
+//@PRACOWNIA
+//@out Exit code: 70
diff --git a/tests/pracownia3/013_add_literals.xi b/tests/pracownia3/013_add_literals.xi
new file mode 100644
index 0000000..9ced5c6
--- /dev/null
+++ b/tests/pracownia3/013_add_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 4 + 3
+}
+
+//@PRACOWNIA
+//@out Exit code: 7
\ No newline at end of file
diff --git a/tests/pracownia3/014_assign.xi b/tests/pracownia3/014_assign.xi
new file mode 100644
index 0000000..bb62c67
--- /dev/null
+++ b/tests/pracownia3/014_assign.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42
+    x = 10
+    return x
+}
+
+//@PRACOWNIA
+//@out Exit code: 10
\ No newline at end of file
diff --git a/tests/pracownia3/015_sub_literals.xi b/tests/pracownia3/015_sub_literals.xi
new file mode 100644
index 0000000..2a8ce93
--- /dev/null
+++ b/tests/pracownia3/015_sub_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 4 - 3
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
\ No newline at end of file
diff --git a/tests/pracownia3/016_fib_rec_3.xi b/tests/pracownia3/016_fib_rec_3.xi
new file mode 100644
index 0000000..49a5d5b
--- /dev/null
+++ b/tests/pracownia3/016_fib_rec_3.xi
@@ -0,0 +1,18 @@
+fib(x:int):int
+{
+    if (x == 0) {
+        return 0
+    }
+    if (x == 1) {
+        return 1
+    }
+    return fib(x-1) + fib(x-2)
+}
+
+main():int
+{
+    return fib(5)
+}
+
+//@PRACOWNIA
+//@out Exit code: 5
\ No newline at end of file
diff --git a/tests/pracownia3/017_return_42.xi b/tests/pracownia3/017_return_42.xi
new file mode 100644
index 0000000..6d53081
--- /dev/null
+++ b/tests/pracownia3/017_return_42.xi
@@ -0,0 +1,8 @@
+
+main():int 
+{
+    return 42
+}
+
+//@PRACOWNIA
+//@out Exit code: 42
\ No newline at end of file
diff --git a/tests/pracownia3/018_empty_main.xi b/tests/pracownia3/018_empty_main.xi
new file mode 100644
index 0000000..336daf1
--- /dev/null
+++ b/tests/pracownia3/018_empty_main.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia3/019_while_sum.xi b/tests/pracownia3/019_while_sum.xi
new file mode 100644
index 0000000..8821a07
--- /dev/null
+++ b/tests/pracownia3/019_while_sum.xi
@@ -0,0 +1,14 @@
+main():int
+{
+    i:int = 0;
+    n:int = 10;
+    sum:int = 0;
+    while (i < n) {
+        sum = sum + i
+        i = i + 1
+    }
+    return sum
+}
+
+//@PRACOWNIA
+//@out Exit code: 45
\ No newline at end of file
diff --git a/tests/pracownia3/020_return_variable.xi b/tests/pracownia3/020_return_variable.xi
new file mode 100644
index 0000000..288a5eb
--- /dev/null
+++ b/tests/pracownia3/020_return_variable.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int = 42
+    return x
+}
+
+//@PRACOWNIA
+//@out Exit code: 42
\ No newline at end of file
diff --git a/tests/pracownia3/021_printInt.xi b/tests/pracownia3/021_printInt.xi
new file mode 100644
index 0000000..5f75922
--- /dev/null
+++ b/tests/pracownia3/021_printInt.xi
@@ -0,0 +1,16 @@
+
+printInt(x:int)
+
+main():int
+{
+    printInt(5)
+    printInt(10)
+    printInt(15)
+    return 0
+}
+
+//@PRACOWNIA
+//@out 5
+//@out 10
+//@out 15
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia3/022_if_eq_true.xi b/tests/pracownia3/022_if_eq_true.xi
new file mode 100644
index 0000000..4571f1b
--- /dev/null
+++ b/tests/pracownia3/022_if_eq_true.xi
@@ -0,0 +1,13 @@
+main():int
+{
+    x:int = 33;
+    result:int = 99
+    if (x == 33) {
+        result = 100
+    } 
+
+    return result
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
\ No newline at end of file
diff --git a/tests/pracownia3/023_ifelse_pred.xi b/tests/pracownia3/023_ifelse_pred.xi
new file mode 100644
index 0000000..10010d6
--- /dev/null
+++ b/tests/pracownia3/023_ifelse_pred.xi
@@ -0,0 +1,18 @@
+pred():bool
+{
+    return true
+}
+
+main():int
+{
+    result:int = 13
+    if pred() {
+        result = 100
+    } else {
+        result = 1
+    }
+    return result
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
diff --git a/tests/pracownia3/024_fac.xi b/tests/pracownia3/024_fac.xi
new file mode 100644
index 0000000..381de7c
--- /dev/null
+++ b/tests/pracownia3/024_fac.xi
@@ -0,0 +1,17 @@
+fac(x:int):int
+{
+    res:int = 1
+    while (x > 0) {
+        res = x*res
+        x = x - 1
+    }
+    return res
+}
+
+main():int
+{
+    return fac(5)
+}
+
+//@PRACOWNIA
+//@out Exit code: 120
\ No newline at end of file
diff --git a/tests/pracownia3/025_and_literals.xi b/tests/pracownia3/025_and_literals.xi
new file mode 100644
index 0000000..fc87e96
--- /dev/null
+++ b/tests/pracownia3/025_and_literals.xi
@@ -0,0 +1,16 @@
+convert(b:bool):int
+{
+    if b {
+        return 1
+    } else {
+        return 0
+    }
+}
+
+main():int
+{
+    return convert(true & false)
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
diff --git a/tests/pracownia3/026_printString.xi b/tests/pracownia3/026_printString.xi
new file mode 100644
index 0000000..29dc5aa
--- /dev/null
+++ b/tests/pracownia3/026_printString.xi
@@ -0,0 +1,11 @@
+printString(x:int[])
+
+main():int
+{
+    printString("Wroclaw")
+    return 0
+}
+
+//@PRACOWNIA
+//@out Wroclaw
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia3/027_init_2_variables.xi b/tests/pracownia3/027_init_2_variables.xi
new file mode 100644
index 0000000..b417ab1
--- /dev/null
+++ b/tests/pracownia3/027_init_2_variables.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42;
+    y:int = 43;
+    return 14
+}
+
+//@PRACOWNIA
+//@out Exit code: 14
\ No newline at end of file
diff --git a/tests/pracownia3/028_return_second_variable.xi b/tests/pracownia3/028_return_second_variable.xi
new file mode 100644
index 0000000..257fce9
--- /dev/null
+++ b/tests/pracownia3/028_return_second_variable.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42
+    y:int = 43
+    return y
+}
+
+//@PRACOWNIA
+//@out Exit code: 43
\ No newline at end of file
diff --git a/tests/pracownia3/029_return_first_variable.xi b/tests/pracownia3/029_return_first_variable.xi
new file mode 100644
index 0000000..138a3a2
--- /dev/null
+++ b/tests/pracownia3/029_return_first_variable.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int = 42
+    y:int = 43
+    return x
+}
+
+//@PRACOWNIA
+//@out Exit code: 42
\ No newline at end of file
diff --git a/tests/pracownia3/030_length_string.xi b/tests/pracownia3/030_length_string.xi
new file mode 100644
index 0000000..bc6011a
--- /dev/null
+++ b/tests/pracownia3/030_length_string.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = "Wroclaw"
+    return length(x)
+}
+
+//@PRACOWNIA
+//@out Exit code: 7
\ No newline at end of file
diff --git a/tests/pracownia3/031_div_literals.xi b/tests/pracownia3/031_div_literals.xi
new file mode 100644
index 0000000..16a75f8
--- /dev/null
+++ b/tests/pracownia3/031_div_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 8 / 2
+}
+
+//@PRACOWNIA
+//@out Exit code: 4
\ No newline at end of file
diff --git a/tests/pracownia3/032_return_index0.xi b/tests/pracownia3/032_return_index0.xi
new file mode 100644
index 0000000..09ddee4
--- /dev/null
+++ b/tests/pracownia3/032_return_index0.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {5, 10, 15}
+    return x[0]
+}
+
+//@PRACOWNIA
+//@out Exit code: 5
\ No newline at end of file
diff --git a/tests/pracownia3/033_multiarray.xi b/tests/pracownia3/033_multiarray.xi
new file mode 100644
index 0000000..f6fb7b5
--- /dev/null
+++ b/tests/pracownia3/033_multiarray.xi
@@ -0,0 +1,13 @@
+main():int { 
+    xs:int[2][3];
+    xs[0][0] = 1;
+    xs[0][1] = 2;
+    xs[0][2] = 3;
+    xs[1][0] = 10;
+    xs[1][1] = 20;
+    xs[1][2] = 30;
+    return xs[0][0] + xs[0][1] + xs[0][2] + xs[1][0] + xs[1][1] + xs[1][2];
+}
+
+//@PRACOWNIA
+//@out Exit code: 66
diff --git a/tests/pracownia3/034_or_literals.xi b/tests/pracownia3/034_or_literals.xi
new file mode 100644
index 0000000..ca1c9da
--- /dev/null
+++ b/tests/pracownia3/034_or_literals.xi
@@ -0,0 +1,15 @@
+convert(b:bool):int
+{
+    if b {
+        return 1
+    } else {
+        return 0
+    }
+}
+main():int
+{
+    return convert(false | true)
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
diff --git a/tests/pracownia3/035_return_char.xi b/tests/pracownia3/035_return_char.xi
new file mode 100644
index 0000000..689567a
--- /dev/null
+++ b/tests/pracownia3/035_return_char.xi
@@ -0,0 +1,7 @@
+main():int
+{
+    return 'a'
+}
+
+//@PRACOWNIA
+//@out Exit code: 97
diff --git a/tests/pracownia3/036_multireturn_3.xi b/tests/pracownia3/036_multireturn_3.xi
new file mode 100644
index 0000000..f8190a8
--- /dev/null
+++ b/tests/pracownia3/036_multireturn_3.xi
@@ -0,0 +1,12 @@
+f(): int, int, int
+{
+    return 10, 15, 20
+}
+
+main():int {
+    x:int, y:int, z:int = f()
+    return x + y + z;
+}
+
+//@PRACOWNIA
+//@out Exit code: 45
diff --git a/tests/pracownia3/037_concat_lhs_len.xi b/tests/pracownia3/037_concat_lhs_len.xi
new file mode 100644
index 0000000..f51c1e0
--- /dev/null
+++ b/tests/pracownia3/037_concat_lhs_len.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    z:int[] = {100, 200} + {}
+    return length(z)
+}
+
+//@PRACOWNIA
+//@out Exit code: 2
\ No newline at end of file
diff --git a/tests/pracownia3/038_fac_rec_5.xi b/tests/pracownia3/038_fac_rec_5.xi
new file mode 100644
index 0000000..1258e53
--- /dev/null
+++ b/tests/pracownia3/038_fac_rec_5.xi
@@ -0,0 +1,15 @@
+fac(x:int):int
+{
+    if (x == 0) {
+        return 1
+    }
+    return fac(x-1)*x
+}
+
+main():int
+{
+    return fac(5)
+}
+
+//@PRACOWNIA
+//@out Exit code: 120
\ No newline at end of file
diff --git a/tests/pracownia3/039_ifelse_eq_true_ret.xi b/tests/pracownia3/039_ifelse_eq_true_ret.xi
new file mode 100644
index 0000000..70a6491
--- /dev/null
+++ b/tests/pracownia3/039_ifelse_eq_true_ret.xi
@@ -0,0 +1,13 @@
+main():int
+{
+    x:int = 33;
+    if (x == 33) {
+        return 100
+    }  else {
+        return 10
+    }
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
\ No newline at end of file
diff --git a/tests/pracownia3/040_string.xi b/tests/pracownia3/040_string.xi
new file mode 100644
index 0000000..f046b6b
--- /dev/null
+++ b/tests/pracownia3/040_string.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = "Wroclaw"
+    return 13
+}
+
+//@PRACOWNIA
+//@out Exit code: 13
\ No newline at end of file
diff --git a/tests/pracownia3/041_assign_index0.xi b/tests/pracownia3/041_assign_index0.xi
new file mode 100644
index 0000000..f1c39b6
--- /dev/null
+++ b/tests/pracownia3/041_assign_index0.xi
@@ -0,0 +1,9 @@
+main():int
+{
+    x:int[] = {5, 10, 15}
+    x[0] = 20
+    return x[0]
+}
+
+//@PRACOWNIA
+//@out Exit code: 20
\ No newline at end of file
diff --git a/tests/pracownia3/042_return_nl.xi b/tests/pracownia3/042_return_nl.xi
new file mode 100644
index 0000000..b529e15
--- /dev/null
+++ b/tests/pracownia3/042_return_nl.xi
@@ -0,0 +1,7 @@
+main():int
+{
+    return '\n'
+}
+
+//@PRACOWNIA
+//@out Exit code: 10
diff --git a/tests/pracownia3/043_while_or.xi b/tests/pracownia3/043_while_or.xi
new file mode 100644
index 0000000..5d9525e
--- /dev/null
+++ b/tests/pracownia3/043_while_or.xi
@@ -0,0 +1,18 @@
+pred():bool
+{
+    return false
+}
+
+main():int
+{
+    x:bool = true
+    result:int = 13
+    while x | pred() {
+        result = 100
+        x = false 
+    }
+    return result
+}
+
+//@PRACOWNIA
+//@out Exit code: 100
diff --git a/tests/pracownia3/044_list_init.xi b/tests/pracownia3/044_list_init.xi
new file mode 100644
index 0000000..a7a2c9d
--- /dev/null
+++ b/tests/pracownia3/044_list_init.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {1,2,3}
+    return 0
+}
+
+//@PRACOWNIA
+//@out Exit code: 0
\ No newline at end of file
diff --git a/tests/pracownia3/045_mod_literals.xi b/tests/pracownia3/045_mod_literals.xi
new file mode 100644
index 0000000..e904355
--- /dev/null
+++ b/tests/pracownia3/045_mod_literals.xi
@@ -0,0 +1,8 @@
+
+main():int
+{
+    return 3 % 2
+}
+
+//@PRACOWNIA
+//@out Exit code: 1
diff --git a/tests/pracownia3/046_return_index1.xi b/tests/pracownia3/046_return_index1.xi
new file mode 100644
index 0000000..b2af5d1
--- /dev/null
+++ b/tests/pracownia3/046_return_index1.xi
@@ -0,0 +1,8 @@
+main():int
+{
+    x:int[] = {5, 10, 15}
+    return x[1]
+}
+
+//@PRACOWNIA
+//@out Exit code: 10
\ No newline at end of file
diff --git a/tests/pracownia3/047_and_10_.xi b/tests/pracownia3/047_and_10_.xi
new file mode 100644
index 0000000..d9469ae
--- /dev/null
+++ b/tests/pracownia3/047_and_10_.xi
@@ -0,0 +1,30 @@
+printString(str:int[])
+
+pred_lhs():bool
+{
+    printString("pred_lhs")
+    return true
+}
+
+pred_rhs():bool
+{
+    printString("pred_rhs")
+    return false
+}
+
+main():int
+{
+    result:int = 3
+    if pred_lhs() & pred_rhs() {
+        result = 1
+    } else {
+        result = 0
+    }
+
+    return result
+}
+
+//@PRACOWNIA
+//@out pred_lhs
+//@out pred_rhs
+//@out Exit code: 0