diff options
author | johnvg | 2016-06-10 11:02:48 +0000 |
---|---|---|
committer | johnvg | 2016-06-10 11:02:48 +0000 |
commit | 8815a6dfdf94e68d1c6081f386564f8500985ee8 (patch) | |
tree | bf86c491cd389cdf0f3ca3546b91b8f0bb13e70a /frontend/type.icl | |
parent | pass -dynamics to backend (diff) |
add Expression to CP_SymbArg and rename as CP_SymbArgAndExpression,
print expression in error message in cannot_unify
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2732 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/type.icl')
-rw-r--r-- | frontend/type.icl | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/frontend/type.icl b/frontend/type.icl index c7d3ec3..4491456 100644 --- a/frontend/type.icl +++ b/frontend/type.icl @@ -269,17 +269,18 @@ cannot_unify t1 t2 position common_defs err ea_file = case position of CP_FunArg _ _ -> ea_file <<< "\"" <<< position <<< "\"" - CP_SymbArg {symb_kind=SK_Constructor {glob_module,glob_object},symb_ident} arg_n + CP_SymbArgAndExpression {symb_kind=SK_Constructor {glob_module,glob_object},symb_ident} arg_n expression #! type_index = common_defs.[glob_module].com_cons_defs.[glob_object].cons_type_index -> case common_defs.[glob_module].com_type_defs.[type_index].td_rhs of RecordType {rt_fields} # field_name = rt_fields.[arg_n-1].fs_ident.id_name record_name = symb_ident.id_name record_name = if (record_name.[0]=='_') (record_name % (1,size record_name-1)) record_name - -> ea_file <<< "\"" <<< "field " <<< field_name <<< " of " <<< record_name <<< "\"" + -> ea_file <<< "\"" <<< "field " <<< field_name <<< " of " <<< record_name + <<< " : " <<< CP_Expression expression <<< "\"" _ -> ea_file <<< "\"" <<< position <<< "\"" - CP_SymbArg _ _ + CP_SymbArgAndExpression _ _ _ -> ea_file <<< "\"" <<< position <<< "\"" CP_LiftedFunArg _ _ -> ea_file <<< "\"" <<< position <<< "\"" @@ -1630,7 +1631,7 @@ where = reqs_ts requirements_of_args ti fun_ident arg_nr [expr:exprs] [lt:lts] reqs_ts # (e_type, opt_expr_ptr, (reqs, ts)) = requirements ti expr reqs_ts - #! type_coercion = {tc_demanded = lt, tc_offered = e_type, tc_position = CP_SymbArg fun_ident arg_nr, tc_coercible = True} + #! type_coercion = {tc_demanded = lt, tc_offered = e_type, tc_position = CP_SymbArgAndExpression fun_ident arg_nr expr, tc_coercible = True} # req_type_coercions = [type_coercion : reqs.req_type_coercions] ts_expr_heap = storeAttribute opt_expr_ptr lt.at_attribute ts.ts_expr_heap = requirements_of_args ti fun_ident (arg_nr+1) exprs lts ({reqs & req_type_coercions = req_type_coercions}, {ts & ts_expr_heap = ts_expr_heap}) @@ -2675,7 +2676,7 @@ where | group_index == size comps = funs_and_state #! comp = comps.[group_index] - # funs_and_state = type_component list_inferred_types comp.group_members class_instances ti funs_and_state + # funs_and_state = type_component list_inferred_types comp.group_members class_instances ti funs_and_state = type_components list_inferred_types (inc group_index) comps class_instances ti funs_and_state /* show_component comp fun_defs @@ -2871,7 +2872,7 @@ where case tc_position of CP_FunArg _ _ -> ea_file <<< "\"" <<< tc_position <<< "\" " - CP_SymbArg _ _ + CP_SymbArgAndExpression _ _ _ -> ea_file <<< "\"" <<< tc_position <<< "\" " CP_LiftedFunArg _ _ -> ea_file <<< "\"" <<< tc_position <<< "\" " |