test cases for the new features
This commit is contained in:
parent
911e6e710f
commit
66653e8f14
4 changed files with 78 additions and 4 deletions
29
tests/compile/tgenericdefaults.nim
Normal file
29
tests/compile/tgenericdefaults.nim
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
type
|
||||
TFoo[T, U, R = int] = object
|
||||
x: T
|
||||
y: U
|
||||
z: R
|
||||
|
||||
TBar[T] = TFoo[T, array[4, T], T]
|
||||
|
||||
var x1: TFoo[int, float]
|
||||
|
||||
static:
|
||||
assert type(x1.x) is int
|
||||
assert type(x1.y) is float
|
||||
assert type(x1.z) is int
|
||||
|
||||
var x2: TFoo[string, R = float, U = seq[int]]
|
||||
|
||||
static:
|
||||
assert type(x2.x) is string
|
||||
assert type(x2.y) is seq[int]
|
||||
assert type(x2.z) is float
|
||||
|
||||
var x3: TBar[float]
|
||||
|
||||
static:
|
||||
assert type(x3.x) is float
|
||||
assert type(x3.y) is array[4, float]
|
||||
assert type(x3.z) is float
|
||||
|
||||
|
|
@ -5,6 +5,8 @@ type
|
|||
T1 = expr
|
||||
T2 = expr
|
||||
|
||||
Numeric = int|float
|
||||
|
||||
proc takesExpr(x, y) =
|
||||
echo x, y
|
||||
|
||||
|
|
@ -32,3 +34,22 @@ takesFoo(f, f)
|
|||
takes2Types(1, 1, "string")
|
||||
takes2Types[string, int]("test", "test", 1)
|
||||
|
||||
proc takesSeq(x: seq) =
|
||||
echo "seq"
|
||||
|
||||
takesSeq(@[1, 2, 3])
|
||||
takesSeq(@["x", "y", "z"])
|
||||
|
||||
proc takesSeqOfFoos(x: seq[TFoo]) =
|
||||
echo "foo seq"
|
||||
|
||||
var sf = newSeq[TFoo[int]](3)
|
||||
|
||||
takesSeq(sf)
|
||||
takesSeqOfFoos(sf)
|
||||
|
||||
proc takesFooOfNumeric(x: TFoo[Numeric]) =
|
||||
echo "foo of numeric"
|
||||
|
||||
takesFooOfNumeric(sf[0])
|
||||
|
||||
|
|
|
|||
17
tests/run/tstaticparams.nim
Normal file
17
tests/run/tstaticparams.nim
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
discard """
|
||||
file: "tstaticparams.nim"
|
||||
output: "abracadabra\ntest"
|
||||
"""
|
||||
|
||||
type
|
||||
TFoo[T; Val: expr[string]] = object
|
||||
data: array[4, T]
|
||||
|
||||
proc takeFoo(x: TFoo) =
|
||||
echo "abracadabra"
|
||||
echo TFoo.Val
|
||||
|
||||
var x: TFoo[int, "test"]
|
||||
|
||||
takeFoo(x)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue