@@ -3330,14 +3330,19 @@ and CommitCallSequel cenv eenv m cloc cgbuf mustGenerateUnitAfterCall sequel =
33303330else GenSequel cenv cloc cgbuf sequel
33313331
33323332
3333+ and MakeNotSupportedExnExpr cenv eenv ( argExpr , m ) =
3334+ let ety = mkAppTy( cenv.g.FindSysTyconRef[ " System" ] " NotSupportedException" ) []
3335+ let ilty = GenType cenv.amap m eenv.tyenv ety
3336+ let mref = mkILCtorMethSpecForTy( ilty, [ cenv.g.ilg.typ_ String]) .MethodRef
3337+ Expr.Op( TOp.ILCall( false , false , false , true , NormalValUse, false , false , mref,[],[],[ ety]),[],[ argExpr], m)
3338+
33333339and GenTraitCall cenv cgbuf eenv ( traitInfo , argExprs , m ) expr sequel =
33343340let minfoOpt = CommitOperationResult( ConstraintSolver.CodegenWitnessThatTypSupportsTraitConstraint cenv.TcVal cenv.g cenv.amap m traitInfo argExprs)
33353341match minfoOptwith
33363342| None->
3337- let replacementExpr =
3338- mkThrow m( tyOfExpr cenv.g expr)
3339- ( mkExnExpr( cenv.g.FindSysTyconRef[ " System" ] " NotSupportedException" ,
3340- [ mkString cenv.g m( FSComp.SR.ilDynamicInvocationNotSupported( traitInfo.MemberName))], m))
3343+ let exnArg = mkString cenv.g m( FSComp.SR.ilDynamicInvocationNotSupported( traitInfo.MemberName))
3344+ let exnExpr = MakeNotSupportedExnExpr cenv eenv( exnArg, m)
3345+ let replacementExpr = mkThrow m( tyOfExpr cenv.g expr) exnExpr
33413346 GenExpr cenv cgbuf eenv SPSuppress replacementExpr sequel
33423347| Some expr->
33433348let expr = cenv.optimizeDuringCodeGen expr
@@ -5162,9 +5167,9 @@ and GenMethodForBinding
51625167// However still generate the code for reflection etc.
51635168let bodyExpr =
51645169if HasFSharpAttribute cenv.g cenv.g.attrib_ NoDynamicInvocationAttribute v.Attribsthen
5165- mkThrow m returnTy
5166- ( mkExnExpr ( cenv.g.FindSysTyconRef [ " System " ] " NotSupportedException " ,
5167- [ mkString cenv.g m ( FSComp.SR.ilDynamicInvocationNotSupported ( v.CompiledName ))], m ))
5170+ let exnArg = mkString cenv.g m ( FSComp.SR.ilDynamicInvocationNotSupported ( v.CompiledName ))
5171+ let exnExpr = MakeNotSupportedExnExpr cenv eenv ( exnArg , m )
5172+ mkThrow m returnTy exnExpr
51685173else
51695174 body
51705175