mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 12:07:51 +00:00
* implements https://github.com/nim-lang/RFCs/issues/258 * don't be too strict with custom pragma blocks * cast pragmas: documentation * added most missing inference query procs to effecttraits.nim
30 lines
586 B
Nim
30 lines
586 B
Nim
discard """
|
|
nimout: '''##[ValueError, Gen[string]]##
|
|
%%[RootEffect]%%
|
|
true true'''
|
|
"""
|
|
|
|
import macros
|
|
import std / effecttraits
|
|
|
|
type
|
|
Gen[T] = object of CatchableError
|
|
x: T
|
|
|
|
macro m(call: typed): untyped =
|
|
echo "##", repr getRaisesList(call[0]), "##"
|
|
echo "%%", repr getTagsList(call[0]), "%%"
|
|
echo isGcSafe(call[0]), " ", hasNoSideEffects(call[0])
|
|
result = call
|
|
|
|
proc gutenTag() {.tags: RootEffect.} = discard
|
|
|
|
proc r(inp: int) =
|
|
if inp == 0:
|
|
raise newException(ValueError, "bah")
|
|
elif inp == 1:
|
|
raise newException(Gen[string], "bahB")
|
|
gutenTag()
|
|
|
|
m r(2)
|