@@ -9362,7 +9362,8 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del
93629362 if isByrefTy g vty then
93639363 destByrefTy g vty
93649364 else
9365- if not vref.IsMutable then error (ValNotMutable(env.DisplayEnv, vref, mStmt))
9365+ if not vref.IsMutable then
9366+ errorR (ValNotMutable (env.DisplayEnv, vref, mStmt))
93669367 vty
93679368 // Always allow subsumption on assignment to fields
93689369 let e2', tpenv = TcExprFlex cenv true false vty2 env tpenv e2
@@ -9415,15 +9416,15 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del
94159416 if meths.IsEmpty then
94169417 let meths = pinfos |> GettersOfPropInfos
94179418 let isByrefMethReturnSetter = meths |> List.exists (function (_,Some pinfo) -> isByrefTy g (pinfo.GetPropertyType(cenv.amap,mItem)) | _ -> false)
9418- if isByrefMethReturnSetter then
9419- // x.P <- ... byref setter
9420- if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable nm, mItem))
9421- TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterResolution NormalValUse args ExprAtomicFlag.Atomic delayed
9422- else
9423- error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm, mItem))
9419+ if not isByrefMethReturnSetter then
9420+ errorR (Error (FSComp.SR.tcPropertyCannotBeSet1 nm, mItem))
9421+ // x.P <- ... byref setter
9422+ if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable nm, mItem))
9423+ TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterResolution NormalValUse args ExprAtomicFlag.Atomic delayed
94249424 else
94259425 let args = if pinfo.IsIndexer then args else []
9426- if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm, mItem))
9426+ if isNil meths then
9427+ errorR (Error (FSComp.SR.tcPropertyCannotBeSet1 nm, mItem))
94279428 // Note: static calls never mutate a struct object argument
94289429 TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt [] mStmt mItem nm ad NeverMutates true meths afterResolution NormalValUse (args@[e2]) ExprAtomicFlag.NonAtomic otherDelayed
94299430 | _ ->
@@ -9600,12 +9601,11 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
96009601 if meths.IsEmpty then
96019602 let meths = pinfos |> GettersOfPropInfos
96029603 let isByrefMethReturnSetter = meths |> List.exists (function (_,Some pinfo) -> isByrefTy cenv.g (pinfo.GetPropertyType(cenv.amap,mItem)) | _ -> false)
9603- if isByrefMethReturnSetter then
9604- // x.P <- ... byref setter
9605- if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable nm, mItem))
9606- TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterResolution NormalValUse args atomicFlag delayed
9607- else
9608- error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm, mItem))
9604+ if not isByrefMethReturnSetter then
9605+ errorR (Error (FSComp.SR.tcPropertyCannotBeSet1 nm, mItem))
9606+ // x.P <- ... byref setter
9607+ if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable nm, mItem))
9608+ TcMethodApplicationThen cenv env overallTy None tpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterResolution NormalValUse args atomicFlag delayed
96099609 else
96109610 let args = if pinfo.IsIndexer then args else []
96119611 let mut = (if isStructTy cenv.g (tyOfExpr cenv.g objExpr) then DefinitelyMutates else PossiblyMutates)
0 commit comments