This commit is contained in:
Araq
2018-04-06 13:10:22 +02:00
parent 824092be31
commit aa6353e4fa
2 changed files with 30 additions and 1 deletions

View File

@@ -271,7 +271,7 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
# little HACK to support the new 'var T' as return type:
linefmt(p, cpsStmts, "$1 = $2;$n", rdLoc(dest), rdLoc(src))
return
let ty = skipTypes(dest.t, abstractRange + tyUserTypeClasses)
let ty = skipTypes(dest.t, abstractRange + tyUserTypeClasses + {tyStatic})
case ty.kind
of tyRef:
genRefAssign(p, dest, src, flags)

View 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