fixes #4179; disallow assignments to openarrays
This commit is contained in:
parent
2b0e9aa167
commit
b4d7ab3caa
1 changed files with 3 additions and 2 deletions
|
|
@ -1400,8 +1400,9 @@ proc semAsgn(c: PContext, n: PNode; mode=asgnNormal): PNode =
|
||||||
# a = b # both are vars, means: a[] = b[]
|
# a = b # both are vars, means: a[] = b[]
|
||||||
# a = b # b no 'var T' means: a = addr(b)
|
# a = b # b no 'var T' means: a = addr(b)
|
||||||
var le = a.typ
|
var le = a.typ
|
||||||
if skipTypes(le, {tyGenericInst}).kind != tyVar and
|
if (skipTypes(le, {tyGenericInst}).kind != tyVar and
|
||||||
isAssignable(c, a) == arNone:
|
isAssignable(c, a) == arNone) or
|
||||||
|
skipTypes(le, abstractVar).kind in {tyOpenArray, tyVarargs}:
|
||||||
# Direct assignment to a discriminant is allowed!
|
# Direct assignment to a discriminant is allowed!
|
||||||
localError(a.info, errXCannotBeAssignedTo,
|
localError(a.info, errXCannotBeAssignedTo,
|
||||||
renderTree(a, {renderNoComments}))
|
renderTree(a, {renderNoComments}))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue