aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/analtypes.icl10
-rw-r--r--frontend/analunitypes.icl7
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]