 
   # Compile the If as a conditional operator.
   compileExpression: (o) ->
+    @condition.tags.operation = on
     code = @condition.compile(o)      + ' ? ' +
            @bodyNode().compileBare(o) + ' : ' +
            @elseBodyNode()?.compileBare o
-    if @tags.operation or @soakNode then "(#{code})" else code
+    if @tags.operation then "(#{code})" else code
 
   unfoldSoak: -> @soakNode and this
 

    return unless ifn = parent[name].unfoldSoak o
    parent[name] = ifn.body
    ifn.body     = new Value parent
    ifn

# Faux-Nodes

    splatargs = @compileSplatArguments o
    return "#{ @superReference o }.apply(this, #{splatargs})" if @isSuper
    unless @isNew
      base = Value.wrap @variable
      if (name = base.properties.pop()) and base.isComplex()
        ref = o.scope.freeVariable 'this'
        fun = "(#{ref} = #{ base.compile o })#{ name.compile o }"
