diff options
Diffstat (limited to 'frontend/check.icl')
-rw-r--r-- | frontend/check.icl | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/frontend/check.icl b/frontend/check.icl index fe7ed0c..0482532 100644 --- a/frontend/check.icl +++ b/frontend/check.icl @@ -473,6 +473,22 @@ where build_type_subst {bind_src,bind_dst} type_heaps # (_, bind_src, type_heaps) = substitute bind_src type_heaps +// RWS ... +/* + FIXME: this is a patch for the following incorrect function type (in a dcl module) + + + f :: a | c a b special + a=[], b = Int + a=T, b = Char + + The type variable b doesn't occur in f's type, but this is checked in a later + phase. Probably it's a better solution to change the order of checking. + +*/ + | isNilPtr bind_dst.tv_info_ptr + = type_heaps +// ... RWS = { type_heaps & th_vars = writePtr bind_dst.tv_info_ptr (TVI_Type bind_src) type_heaps.th_vars} build_var_subst var (free_vars, type_var_heap) |