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

Reply via email to