 # JavaScript without translation, such as: strings, numbers,
 # `true`, `false`, `null`...
 exports.Literal = class Literal extends Base
-
   (@value) ->
 
   makeReturn: ->


# A classic *try/catch/finally* block.
exports.Try = class Try extends Base

  children: ['attempt', 'recovery', 'ensure']

  isStatement: YES

  (@attempt, @error, @recovery, @ensure) ->

  makeReturn: ->
    @attempt  = @attempt .makeReturn() if @attempt


# A JavaScript *switch* statement. Converts into a returnable expression on-demand.
exports.Switch = class Switch extends Base
  (@subject, @cases, @otherwise) ->

  children: ['subject', 'cases', 'otherwise']

  isStatement: YES

  makeReturn: ->
    pair[1].makeReturn() for pair in @cases
