diff options
Diffstat (limited to 'frontend')
-rw-r--r-- | frontend/analtypes.icl | 10 | ||||
-rw-r--r-- | frontend/analunitypes.icl | 7 |
2 files changed, 12 insertions, 5 deletions
diff --git a/frontend/analtypes.icl b/frontend/analtypes.icl index e42f761..ea6729a 100644 --- a/frontend/analtypes.icl +++ b/frontend/analtypes.icl @@ -533,10 +533,6 @@ where # (kind_info_ptr, kind_heap) = newPtr KI_Const kind_heap = (KindVar kind_info_ptr, (type_var_heap <:= (tv_info_ptr, TVI_TypeKind kind_info_ptr), kind_heap <:= (kind_info_ptr, KI_Var kind_info_ptr))) - -is_abs (AbstractType _) = True -is_abs _ = False - analyseTypeDefs :: !{#CommonDefs} !TypeGroups !*TypeDefInfos !*TypeVarHeap !*ErrorAdmin -> (!*TypeDefInfos, !*TypeVarHeap, !*ErrorAdmin) analyseTypeDefs modules groups type_def_infos type_var_heap error # as = { as_kind_heap = newHeap, as_type_var_heap = type_var_heap, as_td_infos = type_def_infos, as_error = error } @@ -565,6 +561,12 @@ where tdi_group_vars = [ i \\ _ <- td_args & i <- [0..]], tdi_properties = properties bitor cIsAnalysed } -> (True, { type_def_infos & [gi_module].[gi_index] = new_tdi}, as_type_var_heap, kind_heap) + AbstractSynType properties _ + # (tdi, type_def_infos) = type_def_infos![gi_module,gi_index] + new_tdi = { tdi & tdi_kinds = [ KindConst \\ _ <- td_args ], + tdi_group_vars = [ i \\ _ <- td_args & i <- [0..]], + tdi_properties = properties bitor cIsAnalysed } + -> (True, { type_def_infos & [gi_module].[gi_index] = new_tdi}, as_type_var_heap, kind_heap) _ # (tdi_kinds, (as_type_var_heap, kind_heap)) = newKindVariables td_args (as_type_var_heap, kind_heap) -> (is_abstract_type, { type_def_infos & [gi_module].[gi_index].tdi_kinds = tdi_kinds }, as_type_var_heap, kind_heap) diff --git a/frontend/analunitypes.icl b/frontend/analunitypes.icl index ede41ee..0e7db0c 100644 --- a/frontend/analunitypes.icl +++ b/frontend/analunitypes.icl @@ -196,7 +196,10 @@ where | properties bitand cIsNonCoercible == 0 = (PostiveSignClass, scs) = (TopSignClass, scs) - + sign_class_of_type_def _ (AbstractSynType properties _) _ _ scs + | properties bitand cIsNonCoercible == 0 + = (PostiveSignClass, scs) + = (TopSignClass, scs) sign_class_of_type_conses module_index [{ds_index}:conses] group_nr ci cumm_sign_class scs #! cons_def = ci.[module_index].com_cons_defs.[ds_index] # (cumm_sign_class, scs) = sign_class_of_type_of_list cons_def.cons_type.st_args group_nr ci cumm_sign_class scs @@ -461,6 +464,8 @@ where = prop_class_of_type_conses module_index [rt_constructor] group_nr ci NoPropClass pcs prop_class_of_type_def _ (AbstractType properties) _ _ pcs = (PropClass, pcs) + prop_class_of_type_def _ (AbstractSynType properties _) _ _ pcs + = (PropClass, pcs) prop_class_of_type_conses module_index [{ds_index}:conses] group_nr ci cumm_prop_class pcs #! cons_def = ci.[module_index].com_cons_defs.[ds_index] |