diff options
author | Bung <crc32@qq.com> | 2023-08-11 18:50:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-11 18:50:31 +0800 |
commit | 3bb75f2dea1c65ee6b4b7fdca48748c97088cf76 (patch) | |
tree | ae14b34d396f3e6ee90c57aeb4d293cb6a01afba | |
parent | 9fed58d5a0ae073c06c67439507d27dd6202b217 (diff) | |
download | Nim-3bb75f2dea1c65ee6b4b7fdca48748c97088cf76.tar.gz |
close #18103 internal error: inconsistent environment type (#22451)
-rw-r--r-- | tests/vm/t18103.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/vm/t18103.nim b/tests/vm/t18103.nim new file mode 100644 index 000000000..8622ab290 --- /dev/null +++ b/tests/vm/t18103.nim @@ -0,0 +1,35 @@ +discard """ + targets: "c cpp" + matrix: "--mm:refc; --mm:arc" +""" + +import base64, complex, sequtils, math, sugar + +type + + FP = float + T = object + index: int + arg: FP + val: Complex[FP] + M = object + alpha, beta: FP + +func a(s: openArray[T], model: M): seq[T] = + let f = (tn: int) => model.alpha + FP(tn) * model.beta; + return mapIt s: + block: + let s = it.val * rect(1.0, - f(it.index)) + T(index: it.index, arg: phase(s), val: s) + +proc b(): float64 = + var s = toSeq(0..10).mapIt(T(index: it, arg: 1.0, val: complex.complex(1.0))) + discard a(s, M(alpha: 1, beta: 1)) + return 1.0 + +func cc(str: cstring, offset: ptr[cdouble]): cint {.exportc.} = + offset[] = b() + return 0 + +static: + echo b() |