 
   isComplex: ->
     @base.isComplex() or @hasProperties()
+
+  assigns: (name) ->
+    not @properties.length and @base.assigns name
 
   makeReturn: ->
     if @properties.length then super() else @base.makeReturn()

        prop = new Assign prop, prop, 'object'
      indent + prop.compile(o) + join
    props = props.join('')
    obj   = '{' + (if props then '\n' + props + '\n' + @idt() else '') + '}'
    if top then "(#{obj})" else obj

#### ArrayLiteral


  isReserved: ->
    !!@value.reserved

  assigns: (name) -> name is @value

  compileNode: (o) ->
    idt = if @isStatement(o) then @idt() else ''
    end = if @isStatement(o) then ';' else ''
