Guest User

Untitled

a guest
Jan 18th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. # nim check -d=nimDumpAsync input.nim
  2. proc foo(): Future[void] =
  3. var retFuture259001 = newFuture[void]("foo")
  4. iterator fooIter259002(): FutureBase {.closure.} =
  5. echo "before await"
  6. var future259003 = newFuture[void]()
  7. yield future259003
  8. if future259003.failed:
  9. setCurrentException(future259003.error)
  10. if future259003.error of Exception:
  11. echo "Exception"
  12. elif true:
  13. echo "except"
  14. elif true:
  15. echo "finally"
  16. elif true:
  17. raise future259003.error
  18. setCurrentException(nil)
  19. else:
  20. try:
  21. future259003.read
  22. echo "after await"
  23. except Exception:
  24. echo "Exception"
  25. except:
  26. echo "except"
  27. finally:
  28. echo "finally"
  29. complete(retFuture259001)
  30.  
  31. var nameIterVar259006 = fooIter259002
  32. proc foo_continue259004() {.closure.} =
  33. try:
  34. if notnameIterVar259006.finished:
  35. var next259008 = nameIterVar259006()
  36. if next259008 ==
  37. nil:
  38. if notretFuture259001.finished:
  39. let msg259010 = "Async procedure ($1) yielded `nil`, are you await\'ing a " &
  40. "`nil` Future?"
  41. raise newException(AssertionError, msg259010 % "foo")
  42. else:
  43. {.gcsafe.}:
  44. {.push, hint[ConvFromXtoItselfNotNeeded]: off.}
  45. next259008.callback = (proc () {.closure, gcsafe.})(foo_continue259004)
  46. {.pop.}
  47. except:
  48. if retFuture259001.finished:
  49. raise
  50. else:
  51. retFuture259001.fail(getCurrentException())
  52.  
  53. foo_continue259004()
  54. return retFuture259001
Add Comment
Please, Sign In to add comment