fixes #1286; object case transitions are now sound

This commit is contained in:
Andreas Rumpf
2019-05-26 23:10:34 +02:00
parent 247fa431de
commit 49e686ab4e
14 changed files with 123 additions and 166 deletions

View File

@@ -232,5 +232,9 @@ proc FieldDiscriminantCheck(oldDiscVal, newDiscVal: int,
L: int) {.compilerProc.} =
var oldBranch = selectBranch(oldDiscVal, L, a)
var newBranch = selectBranch(newDiscVal, L, a)
if newBranch != oldBranch and oldDiscVal != 0:
sysFatal(FieldError, "assignment to discriminant changes object branch")
when defined(nimOldCaseObjects):
if newBranch != oldBranch and oldDiscVal != 0:
sysFatal(FieldError, "assignment to discriminant changes object branch")
else:
if newBranch != oldBranch:
sysFatal(FieldError, "assignment to discriminant changes object branch")