12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #
- #
- # Nim's Runtime Library
- # (c) Copyright 2020 Nim contributors
- #
- # See the file "copying.txt", included in this
- # distribution, for details about the copyright.
- #
- ## This module provides access to the inferred .raises effects
- ## for Nim's macro system.
- ## **Since**: Version 1.4.
- ##
- ## One can test for the existance of this standard module
- ## via ``defined(nimHasEffectTraitsModule)``.
- import macros
- proc getRaisesListImpl(n: NimNode): NimNode = discard "see compiler/vmops.nim"
- proc getTagsListImpl(n: NimNode): NimNode = discard "see compiler/vmops.nim"
- proc isGcSafeImpl(n: NimNode): bool = discard "see compiler/vmops.nim"
- proc hasNoSideEffectsImpl(n: NimNode): bool = discard "see compiler/vmops.nim"
- proc getRaisesList*(fn: NimNode): NimNode =
- ## Extracts the ``.raises`` list of the func/proc/etc ``fn``.
- ## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
- ## implies that the macro that calls this proc should accept ``typed``
- ## arguments and not ``untyped`` arguments.
- expectKind fn, nnkSym
- result = getRaisesListImpl(fn)
- proc getTagsList*(fn: NimNode): NimNode =
- ## Extracts the ``.tags`` list of the func/proc/etc ``fn``.
- ## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
- ## implies that the macro that calls this proc should accept ``typed``
- ## arguments and not ``untyped`` arguments.
- expectKind fn, nnkSym
- result = getTagsListImpl(fn)
- proc isGcSafe*(fn: NimNode): bool =
- ## Return true if the func/proc/etc ``fn`` is `gcsafe`.
- ## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
- ## implies that the macro that calls this proc should accept ``typed``
- ## arguments and not ``untyped`` arguments.
- expectKind fn, nnkSym
- result = isGcSafeImpl(fn)
- proc hasNoSideEffects*(fn: NimNode): bool =
- ## Return true if the func/proc/etc ``fn`` has `noSideEffect`.
- ## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
- ## implies that the macro that calls this proc should accept ``typed``
- ## arguments and not ``untyped`` arguments.
- expectKind fn, nnkSym
- result = hasNoSideEffectsImpl(fn)
|