mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-20 06:20:38 +00:00
fixes #8052
This commit is contained in:
23
tests/template/tnested_template.nim
Normal file
23
tests/template/tnested_template.nim
Normal file
@@ -0,0 +1,23 @@
|
||||
# bug #8052
|
||||
|
||||
type
|
||||
UintImpl*[N: static[int], T: SomeUnsignedInt] = object
|
||||
raw_data*: array[N, T]
|
||||
|
||||
template genLoHi(TypeImpl: untyped): untyped =
|
||||
template loImpl[N: static[int], T: SomeUnsignedInt](dst: TypeImpl[N div 2, T], src: TypeImpl[N, T]) =
|
||||
let halfSize = N div 2
|
||||
for i in 0 ..< halfSize:
|
||||
dst.raw_data[i] = src.raw_data[i]
|
||||
|
||||
proc lo*[N: static[int], T: SomeUnsignedInt](x: TypeImpl[N,T]): TypeImpl[N div 2, T] {.inline.}=
|
||||
loImpl(result, x)
|
||||
|
||||
genLoHi(UintImpl)
|
||||
|
||||
var a: UintImpl[4, uint32]
|
||||
|
||||
a.raw_data = [1'u32, 2'u32, 3'u32, 4'u32]
|
||||
assert a.lo.raw_data.len == 2
|
||||
assert a.lo.raw_data[0] == 1
|
||||
assert a.lo.raw_data[1] == 2
|
||||
Reference in New Issue
Block a user