Merge pull request #8990 from LemonBoy/fix-8259
Always check the deduced type validity for result
This commit is contained in:
commit
9c6dde1b70
2 changed files with 9 additions and 0 deletions
|
|
@ -1560,6 +1560,8 @@ proc semAsgn(c: PContext, n: PNode; mode=asgnNormal): PNode =
|
||||||
rhsTyp = rhsTyp.lastSon
|
rhsTyp = rhsTyp.lastSon
|
||||||
if cmpTypes(c, lhs.typ, rhsTyp) in {isGeneric, isEqual}:
|
if cmpTypes(c, lhs.typ, rhsTyp) in {isGeneric, isEqual}:
|
||||||
internalAssert c.config, c.p.resultSym != nil
|
internalAssert c.config, c.p.resultSym != nil
|
||||||
|
# Make sure the type is valid for the result variable
|
||||||
|
typeAllowedCheck(c.config, n.info, rhsTyp, skResult)
|
||||||
lhs.typ = rhsTyp
|
lhs.typ = rhsTyp
|
||||||
c.p.resultSym.typ = rhsTyp
|
c.p.resultSym.typ = rhsTyp
|
||||||
c.p.owner.typ.sons[0] = rhsTyp
|
c.p.owner.typ.sons[0] = rhsTyp
|
||||||
|
|
|
||||||
7
tests/openarray/t8259.nim
Normal file
7
tests/openarray/t8259.nim
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
discard """
|
||||||
|
line: 6
|
||||||
|
errormsg: "invalid type: 'openarray[int]' for result"
|
||||||
|
"""
|
||||||
|
|
||||||
|
proc foo(a: openArray[int]):auto = a
|
||||||
|
echo foo(toOpenArray([1, 2], 0, 2))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue