   # Wrap the expressions body, unless it contains a pure statement,
   # in which case, no dice. If the body mentions `this` or `arguments`,
   # then make sure that the closure wrapper preserves the original values.
-  wrap: (expressions, statement, force) ->
-    if expressions.containsPureStatement()
-      return expressions unless force
-      throw new Error 'cannot include a pure statement in an expression.'
+  wrap: (expressions, statement) ->
     return expressions if expressions.containsPureStatement()
     func = new Parens new Code [], Expressions.wrap [expressions]
     args = []

    rvar          = scope.freeVariable 'result' unless topLevel
    ivar          = if range then name else index
    ivar          = scope.freeVariable 'i' if not ivar or codeInBody
    varPart       = ''
    guardPart     = ''
    body          = Expressions.wrap([@body])

  # object with their parent closure, to preserve the expected lexical scope.
  compileClosure: (o) ->
    o.sharedScope = o.scope
    throw new Error 'cannot include a pure statement in an expression.' if @containsPureStatement()
    Closure.wrap(this).compile o

  # If the code generation wishes to use the result of a complex expression
  # in multiple places, ensure that the expression is only ever evaluated once,
