diff options
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r-- | src/interp/compiler.boot | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index 0254f3db..dea05b3d 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -1379,7 +1379,7 @@ compIf(["IF",a,b,c],m,E) == canReturn(expr,level,exitCount,ValueFlag) == --SPAD: exit and friends expr isnt [.,:.] => ValueFlag and level=exitCount op := expr.op - op in '(QUOTE CLOSEDFN) => ValueFlag and level=exitCount + op in '(QUOTE CLOSEDFN %lambda) => ValueFlag and level=exitCount op is "TAGGEDexit" => expr is [.,count,data] => canReturn(data.expr,level,count,count=level) level=exitCount and not ValueFlag => nil @@ -2684,8 +2684,7 @@ compUnnamedMapping(parms,source,target,body,env) == [.,.,env] := compMakeDeclaration(p,s,env) env := giveVariableSomeValue(p,get(p,'mode,env),env) T := comp(body,target,env) or return nil - [.,fun] := optimizeFunctionDef [nil,["LAMBDA",parms,T.expr]] - fun := finishLambdaExpression(fun,env) + fun := ['%closure,['%lambda,[:parms,'$],T.expr],'$] [fun,["Mapping",T.mode,:source],savedEnv] gatherParameterList vars == main(vars,nil,nil) where |