diff options
Diffstat (limited to 'frontend/syntax.icl')
-rw-r--r-- | frontend/syntax.icl | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/frontend/syntax.icl b/frontend/syntax.icl index 086c7b3..ba2056d 100644 --- a/frontend/syntax.icl +++ b/frontend/syntax.icl @@ -995,10 +995,17 @@ cIsNotStrict :== False } :: Let = - { let_strict_binds :: !Env Expression FreeVar - , let_lazy_binds :: !Env Expression FreeVar + { let_strict_binds :: ![LetBind] + , let_lazy_binds :: ![LetBind] , let_expr :: !Expression , let_info_ptr :: !ExprInfoPtr + , let_expr_position :: !Position + } + +:: LetBind = + { lb_dst :: !FreeVar + , lb_src :: !Expression + , lb_position :: !Position } :: DynamicExpr = @@ -1083,7 +1090,6 @@ cIsNotStrict :== False , ip_file :: !FileName } - :: FileName :== String :: FunctName :== String @@ -1417,6 +1423,11 @@ where (<<<) file expr = abort ("<<< (Expression) [line 1290]" )//<<- expr) +instance <<< LetBind +where + (<<<) file {lb_dst, lb_src} + = file <<< lb_dst <<< " = " <<< lb_src <<< "\n" + instance <<< TypeCase where (<<<) file {type_case_dynamic,type_case_patterns,type_case_default} |