Skip to content

Commit

Permalink
WrapStatic => StaticParam
Browse files Browse the repository at this point in the history
  • Loading branch information
timotheecour committed Feb 28, 2020
1 parent 6f61c6a commit b983986
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
8 changes: 4 additions & 4 deletions lib/pure/typetraits.nim
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ since (1, 1):
# Note: `[]` currently gives: `Error: no generic parameters allowed for ...`
type(default(T)[i])

type WrapStatic*[Val] = object
type StaticParam*[value] = object
## used to wrap a static value in `genericParams`

import std/macros
Expand All @@ -111,7 +111,7 @@ macro genericParamsImpl(T: typedesc): untyped =
var ret: NimNode
case ai.typeKind
of ntyStatic:
ret = newTree(nnkBracketExpr, @[bindSym"WrapStatic", ai])
ret = newTree(nnkBracketExpr, @[bindSym"StaticParam", ai])
of ntyTypeDesc:
ret = ai
else:
Expand All @@ -128,8 +128,8 @@ since (1, 1):
type Foo[T1, T2]=object
doAssert genericParams(Foo[float, string]) is (float, string)
type Bar[N: static float, T] = object
doAssert genericParams(Bar[1.0, string]) is (WrapStatic[1.0], string)
doAssert genericParams(Bar[1.0, string]).get(0).Val == 1.0
doAssert genericParams(Bar[1.0, string]) is (StaticParam[1.0], string)
doAssert genericParams(Bar[1.0, string]).get(0).value == 1.0

type T2 = T
genericParamsImpl(T2)
Expand Down
20 changes: 10 additions & 10 deletions tests/metatype/ttypetraits.nim
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,10 @@ block genericParams:

type Bar[N: static int, T] = object
type Bar3 = Bar[3, float]
doAssert genericParams(Bar3) is (WrapStatic[3], float)
doAssert genericParams(Bar3).get(0) is WrapStatic
doAssert genericParams(Bar3).get(0).Val == 3
doAssert genericParams(Bar[3, float]).get(0).Val == 3
doAssert genericParams(Bar3) is (StaticParam[3], float)
doAssert genericParams(Bar3).get(0) is StaticParam
doAssert genericParams(Bar3).get(0).value == 3
doAssert genericParams(Bar[3, float]).get(0).value == 3

type
VectorElementType = SomeNumber | bool
Expand All @@ -166,22 +166,22 @@ block genericParams:
doAssert genericParams(MyGenericTuple2[float, int]) is (float, int)
doAssert genericParams(MyGenericAlias) is (string,)
doAssert genericParams(Vec4f) is (float32,)
doAssert genericParams(Vec[4, bool]) is (WrapStatic[4], bool)
doAssert genericParams(Vec[4, bool]) is (StaticParam[4], bool)

block:
type Foo[T1, T2]=object
doAssert genericParams(Foo[float, string]) is (float, string)
type Bar[N: static float, T] = object
doAssert genericParams(Bar[1.0, string]) is (WrapStatic[1.0], string)
doAssert genericParams(Bar[1.0, string]) is (StaticParam[1.0], string)
type Bar2 = Bar[2.0, string]
doAssert genericParams(Bar2) is (WrapStatic[2.0], string)
doAssert genericParams(Bar2) is (StaticParam[2.0], string)
type Bar3 = Bar[1.0 + 2.0, string]
doAssert genericParams(Bar3) is (WrapStatic[3.0], string)
doAssert genericParams(Bar3) is (StaticParam[3.0], string)

const F = 5.0
type Bar4 = Bar[F, string]
doAssert genericParams(Bar4) is (WrapStatic[5.0], string)
doAssert genericParams(Bar[F, string]) is (WrapStatic[5.0], string)
doAssert genericParams(Bar4) is (StaticParam[5.0], string)
doAssert genericParams(Bar[F, string]) is (StaticParam[5.0], string)

##############################################
# bug 13095
Expand Down

0 comments on commit b983986

Please sign in to comment.