allow converting static vars to openArray (#19035)
When assigning constant output to a seq, and then passing that static seq to other functions that take `openArray`, the compiler may end up producing errors, as it does not know how to convert `static[seq[T]]` to `openArray[T]`. By ignoring the `static` wrapper on the type for the purpose of determining data memory location and length, this gets resolved cleanly. Unfortunately, it is relatively tricky to come up with a minimal example, as there are followup problems from the failing conversion, e.g., this may lead to `internal error: inconsistent environment type`, instead of the relevant `openArrayLoc` error message.
This commit is contained in:
parent
4d8108046b
commit
490c4226a5
1 changed files with 1 additions and 1 deletions
|
|
@ -214,7 +214,7 @@ proc openArrayLoc(p: BProc, formalType: PType, n: PNode): Rope =
|
||||||
else:
|
else:
|
||||||
var a: TLoc
|
var a: TLoc
|
||||||
initLocExpr(p, if n.kind == nkHiddenStdConv: n[1] else: n, a)
|
initLocExpr(p, if n.kind == nkHiddenStdConv: n[1] else: n, a)
|
||||||
case skipTypes(a.t, abstractVar).kind
|
case skipTypes(a.t, abstractVar+{tyStatic}).kind
|
||||||
of tyOpenArray, tyVarargs:
|
of tyOpenArray, tyVarargs:
|
||||||
if reifiedOpenArray(n):
|
if reifiedOpenArray(n):
|
||||||
if a.t.kind in {tyVar, tyLent}:
|
if a.t.kind in {tyVar, tyLent}:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue