@@ -3647,7 +3647,7 @@ exports.For = class For extends While
3647
3647
body = Block .wrap [new If @guard , body] if @guard
3648
3648
if @pattern
3649
3649
body .expressions .unshift new Assign @name , if @from then new IdentifierLiteral kvar else new Literal " #{ svar} [#{ kvar} ]"
3650
- defPartFragments = []. concat @ makeCode (defPart), @ pluckDirectCall (o, body)
3650
+
3651
3651
varPart = " \n #{ idt1}#{ namePart} ;" if namePart
3652
3652
if @object
3653
3653
forPartFragments = [@ makeCode (" #{ kvar} in #{ svar} " )]
@@ -3658,36 +3658,14 @@ exports.For = class For extends While
3658
3658
if bodyFragments and bodyFragments .length > 0
3659
3659
bodyFragments = [].concat @ makeCode (' \n ' ), bodyFragments, @ makeCode (' \n ' )
3660
3660
3661
- fragments = []
3662
- if defPartFragments? and fragmentsToText (defPartFragments) isnt ' '
3663
- fragments = fragments .concat defPartFragments
3661
+ fragments = [@ makeCode (defPart)]
3664
3662
fragments .push @ makeCode (resultPart) if resultPart
3665
3663
fragments = fragments .concat @ makeCode (@tab ), @ makeCode ( ' for (' ),
3666
3664
forPartFragments, @ makeCode (" ) {#{ guardPart}#{ varPart} " ), bodyFragments,
3667
3665
@ makeCode (@tab ), @ makeCode (' }' )
3668
3666
fragments .push @ makeCode (returnResult) if returnResult
3669
3667
fragments
3670
3668
3671
- pluckDirectCall : (o , body ) ->
3672
- defs = []
3673
- for expr, idx in body .expressions
3674
- expr = expr .unwrapAll ()
3675
- continue unless expr instanceof Call
3676
- val = expr .variable ? .unwrapAll ()
3677
- continue unless (val instanceof Code) or
3678
- (val instanceof Value and
3679
- val .base ? .unwrapAll () instanceof Code and
3680
- val .properties .length is 1 and
3681
- val .properties [0 ].name ? .value in [' call' , ' apply' ])
3682
- fn = val .base ? .unwrapAll () or val
3683
- ref = new IdentifierLiteral o .scope .freeVariable ' fn'
3684
- base = new Value ref
3685
- if val .base
3686
- [val .base , base ] = [base, val]
3687
- body .expressions [idx] = new Call base, expr .args
3688
- defs = defs .concat @ makeCode (@tab ), (new Assign (ref, fn).compileToFragments (o, LEVEL_TOP)), @ makeCode (' ;\n ' )
3689
- defs
3690
-
3691
3669
# ### Switch
3692
3670
3693
3671
# A JavaScript *switch* statement. Converts into a returnable expression on-demand.
0 commit comments