diff options
Diffstat (limited to 'frontend/comparedefimp.icl')
-rw-r--r-- | frontend/comparedefimp.icl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/frontend/comparedefimp.icl b/frontend/comparedefimp.icl index 6b918c1..2bc1140 100644 --- a/frontend/comparedefimp.icl +++ b/frontend/comparedefimp.icl @@ -231,6 +231,23 @@ where = compare dclDef iclDef comp_st compare (TV dclVar) (TV iclVar) comp_st = compare dclVar iclVar comp_st + compare (TFA dclvars dcltype) (TFA iclvars icltype) comp_st=:{comp_type_var_heap} + # comp_type_var_heap = initialyseATypeVars dclvars iclvars comp_type_var_heap + (ok, comp_st) = compare dcltype icltype { comp_st & comp_type_var_heap = comp_type_var_heap } + type_heaps = foldSt clear_type_var dclvars (comp_st.comp_type_var_heap, comp_st.comp_attr_var_heap) + (comp_type_var_heap, comp_attr_var_heap) = foldSt clear_type_var iclvars type_heaps + = (ok, { comp_st & comp_type_var_heap = comp_type_var_heap, comp_attr_var_heap = comp_attr_var_heap }) + where + clear_type_var {atv_variable={tv_info_ptr}, atv_attribute} (type_var_heap,attr_var_heap) + = (type_var_heap <:= (tv_info_ptr, TVI_Empty), clear_attr_var atv_attribute attr_var_heap) + + clear_attr_var (TA_Var {av_info_ptr}) attr_var_heap + = attr_var_heap <:= (av_info_ptr, AVI_Empty) + clear_attr_var (TA_RootVar {av_info_ptr}) attr_var_heap + = attr_var_heap <:= (av_info_ptr, AVI_Empty) + clear_attr_var attr attr_var_heap + = attr_var_heap + compare _ _ comp_st = (False, comp_st) |