fixes #4179; disallow assignments to openarrays

This commit is contained in:
Andreas Rumpf
2016-08-26 17:29:56 +02:00
parent 2b0e9aa167
commit b4d7ab3caa

View File

@@ -1400,8 +1400,9 @@ proc semAsgn(c: PContext, n: PNode; mode=asgnNormal): PNode =
# a = b # both are vars, means: a[] = b[]
# a = b # b no 'var T' means: a = addr(b)
var le = a.typ
if skipTypes(le, {tyGenericInst}).kind != tyVar and
isAssignable(c, a) == arNone:
if (skipTypes(le, {tyGenericInst}).kind != tyVar and
isAssignable(c, a) == arNone) or
skipTypes(le, abstractVar).kind in {tyOpenArray, tyVarargs}:
# Direct assignment to a discriminant is allowed!
localError(a.info, errXCannotBeAssignedTo,
renderTree(a, {renderNoComments}))