fixes #6843
This commit is contained in:
parent
824092be31
commit
aa6353e4fa
2 changed files with 30 additions and 1 deletions
|
|
@ -271,7 +271,7 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
|
||||||
# little HACK to support the new 'var T' as return type:
|
# little HACK to support the new 'var T' as return type:
|
||||||
linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(dest), rdLoc(src))
|
linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(dest), rdLoc(src))
|
||||||
return
|
return
|
||||||
let ty = skipTypes(dest.t, abstractRange + tyUserTypeClasses)
|
let ty = skipTypes(dest.t, abstractRange + tyUserTypeClasses + {tyStatic})
|
||||||
case ty.kind
|
case ty.kind
|
||||||
of tyRef:
|
of tyRef:
|
||||||
genRefAssign(p, dest, src, flags)
|
genRefAssign(p, dest, src, flags)
|
||||||
|
|
|
||||||
29
tests/statictypes/tstackmatrix.nim
Normal file
29
tests/statictypes/tstackmatrix.nim
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
discard """
|
||||||
|
output: "(M: 3, N: 3, fp: ...)"
|
||||||
|
"""
|
||||||
|
|
||||||
|
# bug #6843
|
||||||
|
|
||||||
|
type
|
||||||
|
OrderType = enum colMajor, rowMajor
|
||||||
|
Matrix[A] = object
|
||||||
|
M, N: int
|
||||||
|
fp: ptr A # float pointer
|
||||||
|
DoubleArray64[M, N: static[int]] = array[M, array[N, float64]]
|
||||||
|
|
||||||
|
|
||||||
|
proc stackMatrix[M, N: static[int]](a: var DoubleArray64[M, N], order = colMajor): Matrix[float64] =
|
||||||
|
Matrix[float64](
|
||||||
|
fp: addr a[0][0],
|
||||||
|
M: (if order == colMajor: N else: M),
|
||||||
|
N: (if order == colMajor: M else: N)
|
||||||
|
)
|
||||||
|
|
||||||
|
var
|
||||||
|
data = [
|
||||||
|
[1'f64, 2, 3],
|
||||||
|
[4'f64, 5, 6],
|
||||||
|
[7'f64, 8, 9]
|
||||||
|
]
|
||||||
|
m = stackMatrix(data)
|
||||||
|
echo m
|
||||||
Loading…
Add table
Add a link
Reference in a new issue