Always check the deduced type validity for result

Fixes #8259
This commit is contained in:
LemonBoy
2018-09-17 15:33:44 +02:00
parent 6dc6ea4146
commit 3588240226
2 changed files with 9 additions and 0 deletions

View File

@@ -1560,6 +1560,8 @@ proc semAsgn(c: PContext, n: PNode; mode=asgnNormal): PNode =
rhsTyp = rhsTyp.lastSon
if cmpTypes(c, lhs.typ, rhsTyp) in {isGeneric, isEqual}:
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
c.p.resultSym.typ = rhsTyp
c.p.owner.typ.sons[0] = rhsTyp

View 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))