anchor.diff:              errorR(Error(FSComp.SR.tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes(),mWholeExpr))
       else
           if isNil flds then 
  -            let errorInfo = 
  -                if Option.isSome optOrigExpr then FSComp.SR.tcEmptyCopyAndUpdateRecordInvalid()
  -                else FSComp.SR.tcEmptyRecordInvalid()
  +            let errorInfo = if hasOrigExpr then FSComp.SR.tcEmptyCopyAndUpdateRecordInvalid() else FSComp.SR.tcEmptyRecordInvalid()
               error(Error(errorInfo,mWholeExpr))
   
           if isFSharpObjModelTy cenv.g overallTy then errorR(Error(FSComp.SR.tcTypeIsNotARecordTypeNeedConstructor(),mWholeExpr))
  
positive.code: 
                      yield (List.frontAndBack lidwd.Lid, v)
              ]
          match flds with 
          | [] -> []
          | _ ->
              let tcref,_,fldsList = BuildFieldMap cenv env (Option.isSome optOrigExpr) overallTy flds mWholeExpr
              let _,_,_,gtyp = infoOfTyconRef mWholeExpr tcref
              UnifyTypes cenv env mWholeExpr overallTy gtyp      
              fldsList
  
      if Option.isSome optOrigExpr && not (isRecdTy cenv.g overallTy) then 
          errorR(Error(FSComp.SR.tcExpressionFormRequiresRecordTypes(),mWholeExpr))
  
      if requiresCtor || haveCtor then 
  
negative.code:               let oldv,oldve = mkCompGenLocal mWholeExpr "inputRecord" overallTy
                Some (olde,oldv,oldve), tpenv
  
      let hasOrigExpr = Option.isSome optOrigExpr
  
      let fldsList = 
          let flds = 
              [
  