since now takes an optional patch, eg: since: (1, 3, 1) (#14124)

add tests for tinclrtl
This commit is contained in:
Timothee Cour 2020-04-26 05:55:25 -07:00 • committed by GitHub
commit 9384f7ad35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 3 deletions

View file

@ -2055,7 +2055,11 @@ export dollars
const
NimMajor* {.intdefine.}: int = 1
## is the major number of Nim's version.
## is the major number of Nim's version. Example:
##
## .. code-block:: Nim
## when (NimMajor, NimMinor, NimPatch) >= (1, 3, 1): discard
# See also private symbol `since: (1, 3)` reserved for stdlib
NimMinor* {.intdefine.}: int = 3
## is the minor number of Nim's version.

View file

@ -49,8 +49,20 @@ when defined(nimlocks):
else:
{.pragma: benign, gcsafe.}
template isSince(version: (int, int)): bool =
(NimMajor, NimMinor) >= version
template isSince(version: (int, int, int)): bool =
(NimMajor, NimMinor, NimPatch) >= version
template since(version, body: untyped) {.dirty, used.} =
## limitation: can't be used to annotate a template (eg typetraits.get), would
## Usage:
##
## .. code-block:: Nim
## proc fun*() {since: (1, 3).}
## proc fun*() {since: (1, 3, 1).}
##
## Limitation: can't be used to annotate a template (eg typetraits.get), would
## error: cannot attach a custom pragma.
when (NimMajor, NimMinor) >= version:
# `dirty` needed because `NimMajor` may not yet be defined in caller.
when isSince(version):
body