aboutsummaryrefslogtreecommitdiff
path: root/frontend/check.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/check.icl')
-rw-r--r--frontend/check.icl28
1 files changed, 23 insertions, 5 deletions
diff --git a/frontend/check.icl b/frontend/check.icl
index de7ede7..2d7288b 100644
--- a/frontend/check.icl
+++ b/frontend/check.icl
@@ -23,15 +23,21 @@ checkGenerics
| gen_index == size generic_defs
= (generic_defs, class_defs, type_defs, modules, type_heaps, cs)
// otherwise
- # (gen_def=:{gen_name, gen_type, gen_pos}, generic_defs) = generic_defs![gen_index]
+ # (generic_def=:{gen_name, gen_type, gen_pos}, generic_defs) = generic_defs![gen_index]
# position = newPosition gen_name gen_pos
# cs_error = setErrorAdmin position cs_error
//---> ("checkGenerics generic type 1", gen_type.gt_type)
+ // add * for kind-star instances and *->* for arrays
+ # kinds =
+ [ KindConst
+ , KindArrow [KindConst, KindConst]
+ ]
+ # (kinds_ptr, th_vars) = newPtr (TVI_Kinds kinds) th_vars
+
# cs = {cs & cs_error = cs_error, cs_symbol_table = cs_symbol_table }
# type_heaps = {type_heaps & th_vars = th_vars}
- //# (gt_type, _, type_defs, class_defs, modules, type_heaps, cs) =
- // checkSymbolType module_index gen_type.gt_type SP_None type_defs class_defs modules type_heaps cs
+
# (gt_type, type_defs, class_defs, modules, type_heaps, cs) =
checkMemberType module_index gen_type.gt_type type_defs class_defs modules type_heaps cs
@@ -40,7 +46,13 @@ checkGenerics
#! cs = {cs & cs_error = cs_error}
#! gt_type = {gt_type & st_vars = st_vars}
- # generic_defs = {generic_defs & [gen_index] . gen_type = { gen_type & gt_vars = gt_vars, gt_type = gt_type }}
+ # generic_def =
+ { generic_def &
+ gen_type = { gen_type & gt_vars = gt_vars, gt_type = gt_type }
+ , gen_kinds_ptr = kinds_ptr
+ }
+
+ # generic_defs = {generic_defs & [gen_index] = generic_def}
//---> ("checkGenerics generic type 2", gt_type)
= checkGenerics (inc gen_index) module_index generic_defs class_defs type_defs modules type_heaps cs
where
@@ -2537,6 +2549,7 @@ where
# (pre_mod, cs_predef_symbols) = cs_predef_symbols![PD_PredefinedModule]
| pre_mod.pds_def == mod_index
= (class_members, class_instances, fun_types, { cs & cs_predef_symbols = cs_predef_symbols}
+ <=< adjust_predef_symbol PD_StringType mod_index STE_Type
<=< adjust_predef_symbols PD_ListType PD_UnboxedArrayType mod_index STE_Type
<=< adjust_predef_symbols PD_ConsSymbol PD_Arity32TupleSymbol mod_index STE_Constructor
<=< adjust_predef_symbol PD_TypeCodeClass mod_index STE_Class
@@ -2581,7 +2594,12 @@ where
<=< adjust_predef_symbol PD_TypeARROW mod_index STE_Type
<=< adjust_predef_symbol PD_ConsARROW mod_index STE_Constructor
<=< adjust_predef_symbol PD_isomap_ARROW_ mod_index STE_DclFunction
- <=< adjust_predef_symbol PD_isomap_ID mod_index STE_DclFunction)
+ <=< adjust_predef_symbol PD_isomap_ID mod_index STE_DclFunction
+ <=< adjust_predef_symbol PD_TypeCONSInfo mod_index STE_Type
+ <=< adjust_predef_symbol PD_ConsCONSInfo mod_index STE_Constructor
+ <=< adjust_predef_symbol PD_TypeCONS mod_index STE_Type
+ <=< adjust_predef_symbol PD_ConsCONS mod_index STE_Constructor
+ <=< adjust_predef_symbol PD_cons_info mod_index STE_DclFunction)
# (pre_mod, cs_predef_symbols) = cs_predef_symbols![PD_StdMisc]
| pre_mod.pds_def == mod_index
= (class_members, class_instances, fun_types, { cs & cs_predef_symbols = cs_predef_symbols}