aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/check.icl13
-rw-r--r--frontend/postparse.icl3
2 files changed, 14 insertions, 2 deletions
diff --git a/frontend/check.icl b/frontend/check.icl
index 514a350..1353c39 100644
--- a/frontend/check.icl
+++ b/frontend/check.icl
@@ -1187,6 +1187,11 @@ where
check_expressions free_vars [] e_input e_state e_info cs
= ([], free_vars, e_state, e_info, cs)
+ first_argument_of_infix_operator_missing
+ = "first argument of infix operator missing"
+
+ build_expression [Constant symb _ (Prio _ _) _ , _: _] e_state cs_error
+ = (EE, e_state, checkError symb.symb_name first_argument_of_infix_operator_missing cs_error)
build_expression [Constant symb arity _ is_fun] e_state cs_error
= buildApplication symb arity 0 is_fun [] e_state cs_error
build_expression [expr] e_state cs_error
@@ -1196,13 +1201,19 @@ where
(left_expr, e_state, cs_error) = combine_expressions left [] 0 e_state cs_error
= case opt_opr of
Yes (symb, prio, is_fun, right)
- -> build_operator_expression [] left_expr (symb, prio, is_fun) right e_state cs_error
+ -> case right of
+ [Constant symb _ (Prio _ _) _:_]
+ -> (EE, e_state, checkError symb.symb_name first_argument_of_infix_operator_missing cs_error)
+ _
+ -> build_operator_expression [] left_expr (symb, prio, is_fun) right e_state cs_error
No
-> (left_expr, e_state, cs_error)
where
split_at_operator left [Constant symb arity NoPrio is_fun : exprs] e_state cs_error
# (appl_exp, e_state, cs_error) = buildApplication symb arity 0 is_fun [] e_state cs_error
= split_at_operator [appl_exp : left] exprs e_state cs_error
+ split_at_operator left [Constant symb arity (Prio _ _) is_fun] e_state cs_error
+ = (No, left, e_state, checkError symb.symb_name "second argument of infix operator missing" cs_error)
split_at_operator left [Constant symb arity prio is_fun] e_state cs_error
# (appl_exp, e_state, cs_error) = buildApplication symb arity 0 is_fun [] e_state cs_error
= (No, [appl_exp : left], e_state, cs_error)
diff --git a/frontend/postparse.icl b/frontend/postparse.icl
index f42c124..9110509 100644
--- a/frontend/postparse.icl
+++ b/frontend/postparse.icl
@@ -384,7 +384,8 @@ transformGenerator {gen_kind, gen_expr, gen_pattern, gen_position} ca
transformed_generator
= { tg_expr = PE_Tuple [PE_Basic (BVI "0"), PE_List [PE_Ident usize, gen_expr]]
, tg_lhs_arg = PE_Tuple [i, PE_Tuple [n, array]]
- , tg_case_end_expr = PE_List [PE_Ident smaller, i, n]
+// MW50 , tg_case_end_expr = PE_List [PE_Ident smaller, i, n]
+ , tg_case_end_expr = PE_List [PE_List [PE_Ident smaller], i, n]
, tg_case_end_pattern = PE_Basic (BVB True)
, tg_element = PE_List [PE_Ident uselect, array, i]
, tg_case1 = gen_var_case1