Sha256: c3c8e94f846091609e79409555c1e140173b38ed8a14bed87f44ee9b573e577c

Contents?: true

Size: 1.86 KB

Versions: 10

Compression:

Stored size: 1.86 KB

Contents

# Exception Handling
# ------------------

# shared nonce
nonce = {}


# Throw

test "basic exception throwing", ->
  throws (-> throw 'error'), 'error'


# Empty Try/Catch/Finally

test "try can exist alone", ->
  try

test "try/catch with empty try, empty catch", ->
  try
    # nothing
  catch err
    # nothing

test "single-line try/catch with empty try, empty catch", ->
  try catch err

test "try/finally with empty try, empty finally", ->
  try
    # nothing
  finally
    # nothing

test "single-line try/finally with empty try, empty finally", ->
  try finally

test "try/catch/finally with empty try, empty catch, empty finally", ->
  try
  catch err
  finally

test "single-line try/catch/finally with empty try, empty catch, empty finally", ->
  try catch err then finally


# Try/Catch/Finally as an Expression

test "return the result of try when no exception is thrown", ->
  result = try
    nonce
  catch err
    undefined
  finally
    undefined
  eq nonce, result

test "single-line result of try when no exception is thrown", ->
  result = try nonce catch err then undefined
  eq nonce, result

test "return the result of catch when an exception is thrown", ->
  fn = ->
    try
      throw ->
    catch err
      nonce
  doesNotThrow fn
  eq nonce, fn()

test "single-line result of catch when an exception is thrown", ->
  fn = ->
    try throw (->) catch err then nonce
  doesNotThrow fn
  eq nonce, fn()

test "optional catch", ->
  fn = ->
    try throw ->
    nonce
  doesNotThrow fn
  eq nonce, fn()


# Try/Catch/Finally Interaction With Other Constructs

test "try/catch with empty catch as last statement in a function body", ->
  fn = ->
    try nonce
    catch err
  eq nonce, fn()


# Catch leads to broken scoping: #1595

test "try/catch with a reused variable name.", ->
  do ->
    try
      inner = 5
    catch inner
      # nothing
  eq typeof inner, 'undefined'

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
guard-mthaml-0.4.0 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.3.1 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.3.0 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.2.5 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.2.4 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.2.3 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.2.2 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.2.1 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.2.0 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee
guard-mthaml-0.1.0 vendor/coffeescript/coffeescript/tests/cases/exception_handling.coffee