     @isNew    = false
     @isSuper  = variable is 'super'
     @variable = if @isSuper then null else variable
+    if variable instanceof Value and variable.isNotCallable()
+      variable.error "literal is not a function"
 
   children: ['variable', 'args']
 

  hasProperties: ->
    !!@properties.length

  # Some boolean checks for the benefit of other nodes.
  isArray        : -> not @properties.length and @base instanceof Arr
  isComplex      : -> @hasProperties() or @base.isComplex()
  isAssignable   : -> @hasProperties() or @base.isAssignable()
  isSimpleNumber : -> @base instanceof Literal and SIMPLENUM.test @base.value
  isString       : -> @base instanceof Literal and IS_STRING.test @base.value
  isAtomic       : ->
    for node in @properties.concat @base
      return no if node.soak or node instanceof Call
    yes

  isStatement : (o)    -> not @properties.length and @base.isStatement o
  assigns     : (name) -> not @properties.length and @base.assigns name

  $
///

# Is a literal value a string/regex?
IS_STRING = /^['"]/
IS_REGEX = /^\//

# Utility Functions
# -----------------
