fix #12521(type alias for openArray) (#17593)
* fix nim js cmp fails at CT * fix #12521 * address comments
This commit is contained in:
parent
dc89b21257
commit
83fa0fc843
2 changed files with 27 additions and 1 deletions
|
|
@ -453,7 +453,7 @@ proc genProcParams(m: BModule, t: PType, rettype, params: var Rope,
|
||||||
params.add(~"NIM_NOALIAS ")
|
params.add(~"NIM_NOALIAS ")
|
||||||
params.add(param.loc.r)
|
params.add(param.loc.r)
|
||||||
# declare the len field for open arrays:
|
# declare the len field for open arrays:
|
||||||
var arr = param.typ
|
var arr = param.typ.skipTypes({tyGenericInst})
|
||||||
if arr.kind in {tyVar, tyLent, tySink}: arr = arr.lastSon
|
if arr.kind in {tyVar, tyLent, tySink}: arr = arr.lastSon
|
||||||
var j = 0
|
var j = 0
|
||||||
while arr.kind in {tyOpenArray, tyVarargs}:
|
while arr.kind in {tyOpenArray, tyVarargs}:
|
||||||
|
|
|
||||||
|
|
@ -23,5 +23,31 @@ proc main =
|
||||||
when defined(js): discard # xxx bug #15952: `a` left unchanged
|
when defined(js): discard # xxx bug #15952: `a` left unchanged
|
||||||
else: doAssert a == [1, 0, 10, 20, 5]
|
else: doAssert a == [1, 0, 10, 20, 5]
|
||||||
|
|
||||||
|
block: # bug #12521
|
||||||
|
block:
|
||||||
|
type slice[T] = openArray[T]
|
||||||
|
|
||||||
|
# Proc using that alias
|
||||||
|
proc testing(sl: slice[int]): seq[int] =
|
||||||
|
for item in sl:
|
||||||
|
result.add item
|
||||||
|
|
||||||
|
let mySeq = @[1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
doAssert testing(mySeq) == mySeq
|
||||||
|
doAssert testing(mySeq[2..^2]) == mySeq[2..^2]
|
||||||
|
|
||||||
|
block:
|
||||||
|
type slice = openArray[int]
|
||||||
|
|
||||||
|
# Proc using that alias
|
||||||
|
proc testing(sl: slice): seq[int] =
|
||||||
|
for item in sl:
|
||||||
|
result.add item
|
||||||
|
|
||||||
|
let mySeq = @[1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
doAssert testing(mySeq) == mySeq
|
||||||
|
doAssert testing(mySeq[2..^2]) == mySeq[2..^2]
|
||||||
|
|
||||||
|
|
||||||
main()
|
main()
|
||||||
# static: main() # xxx bug #15952: Error: cannot generate code for: mSlice
|
# static: main() # xxx bug #15952: Error: cannot generate code for: mSlice
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue