fixes #20958; fixes the return type of slice function [backport] (#20959)

* fixes #20958; fixes the return type of slice function

* add a testcase
This commit is contained in:
ringabout
2022-11-29 14:21:44 +08:00
committed by GitHub
parent d4afa53fd5
commit 3d5edb41be
2 changed files with 15 additions and 0 deletions

View File

@@ -402,6 +402,9 @@ proc transformSlices(g: ModuleGraph; idgen: IdGenerator; n: PNode): PNode =
let op = n[0].sym
if op.name.s == "[]" and op.fromSystem:
result = copyNode(n)
var typ = newType(tyOpenArray, nextTypeId(g.idgen), result.typ.owner)
typ.add result.typ[0]
result.typ = typ
let opSlice = newSymNode(createMagic(g, idgen, "slice", mSlice))
opSlice.typ = getSysType(g, n.info, tyInt)
result.add opSlice

View File

@@ -61,3 +61,15 @@ maino() # Doesn't work outside a proc
when true:
main()
block two:
proc f(a: openArray[int]) =
discard
proc main() =
var a: array[0..9, int] = [0,1,2,3,4,5,6,7,8,9]
parallel:
spawn f(a[0..2])
main()