@@ -1955,12 +1955,15 @@ and OptimizeConst cenv env expr (c,m,ty) =
19551955// Optimize/analyze a record lookup.
19561956//-------------------------------------------------------------------------
19571957
1958- and TryOptimizeRecordFieldGet cenv _env ( e1info , r : RecdFieldRef , _tinst , m ) =
1958+ and TryOptimizeRecordFieldGet cenv _env ( e1info , ( RFRef ( rtcref , _ ) as r ) ,_tinst , m ) =
19591959match destRecdValue e1info.Infowith
19601960| Some finfoswhen cenv.settings.EliminateRecdFieldGet() && not e1info.HasEffect->
1961- let n = r.Index
1962- if n>= finfos.Lengththen errorR( InternalError( " TryOptimizeRecordFieldGet: term argument out of range" , m))
1963- Some finfos.[ n] (* Uses INVARIANT on record ValInfos that exprs are in defn order*)
1961+ match TryFindFSharpAttribute cenv.g cenv.g.attrib_ CLIMutableAttribute rtcref.Attribswith
1962+ | Some_ -> None
1963+ | None->
1964+ let n = r.Index
1965+ if n>= finfos.Lengththen errorR( InternalError( " TryOptimizeRecordFieldGet: term argument out of range" , m))
1966+ Some finfos.[ n] (* Uses INVARIANT on record ValInfos that exprs are in defn order*)
19641967| _ -> None
19651968
19661969and TryOptimizeTupleFieldGet cenv _env ( _tupInfo , e1info , tys , n , m ) =