discard """
  matrix: "--legacy:noPanicOnExcept"
"""

import options
type Foo  = ref object
  i:      int

proc next(foo: Foo): Option[Foo] =
  try:    doAssert(foo.i == 0)
  except: return      # 2º: none
  return some(foo)    # 1º: some

proc test =
  let foo = Foo()
  var opt = next(foo) # 1º Some
  while isSome(opt) and foo.i < 10:
    inc(foo.i)
    opt = next(foo)   # 2º None
  doAssert foo.i == 1, $foo.i

test()
