       args = [new Literal 'this']
       args.push new Literal 'arguments' if mentionsArgs
       func = new Value func, [new Accessor meth]
+      func.noReturn = noReturn
     call = new Call func, args
     if statement then Expressions.wrap [call] else call
 

          params.push param
    o.scope.startLevel()
    params = (param.compile(o) for param in params)
    @body.makeReturn() unless empty
    (o.scope.parameter(param)) for param in params
    comm  = if @comment then @comment.compile(o) + '\n' else ''
    o.indent = @idt 2 if @className

      body.unshift  new Literal "var #{name} = #{ivar}" if range
      body.unshift  new Literal "var #{namePart}" if namePart
      body.unshift  new Literal "var #{index} = #{ivar}" if index
      lastLine    = body.expressions.pop()
      body.push     new Assign new Literal(ivar), new Literal index if index
      body.push     new Assign new Literal(nvar), new Literal name if nvar
      body.push     lastLine
      # o.indent    = @idt 1
      # comp        = new Literal body.compile o
      body        = Closure.wrap(body, yes, yes)
      body.push     new Assign new Literal(index), new Literal ivar if index
      body.push     new Assign new Literal(name), new Literal nvar or ivar if name
    else
      varPart     = "#{idt1}#{namePart};\n" if namePart
    if @object
      forPart     = "#{ivar} in #{sourcePart}"
      guardPart   = "\n#{idt1}if (!#{utility('hasProp')}.call(#{svar}, #{ivar})) continue;" unless @raw  
    body          = body.compile merge o, indent: idt1, top: true
    vars          = if range then name else "#{name}, #{ivar}"
    """
