Well if you take the compiler's warnings into account the code should run
without this flag just fine. All the flag really does is to strengthen the
object case switch checks:
# system/assign.nim
proc FieldDiscriminantCheck(oldDiscVal, newDiscVal: int,
a: ptr array[0x7fff, ptr TNimNode],
L: int) {.compilerProc.} =
let oldBranch = selectBranch(oldDiscVal, L, a)
let newBranch = selectBranch(newDiscVal, L, a)
when defined(nimOldCaseObjects):
if newBranch != oldBranch and oldDiscVal != 0:
sysFatal(FieldError, "assignment to discriminant changes object
branch")
else:
if newBranch != oldBranch:
if oldDiscVal != 0:
sysFatal(FieldError, "assignment to discriminant changes object
branch")
else:
sysFatal(FieldError, "assignment to discriminant changes object
branch; compile with -d:nimOldCaseObjects for a transition period")
Run