@@ -9178,7 +9178,7 @@ and GetNewInferenceTypeForMethodArg cenv env tpenv x =
91789178
91799179/// Method calls, property lookups, attribute constructions etc. get checked through here
91809180and TcMethodApplication
9181- checkingAttributeCall
9181+ isCheckingAttributeCall
91829182 cenv
91839183 env
91849184 tpenv
@@ -9384,7 +9384,7 @@ and TcMethodApplication
93849384 match tyargsOpt with
93859385 | Some tyargs -> minfo.AdjustUserTypeInstForFSharpStyleIndexedExtensionMembers(tyargs)
93869386 | None -> minst
9387- CalledMeth<SynExpr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall , FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true,objTyOpt)
9387+ CalledMeth<SynExpr>(cenv.infoReader,Some(env.NameEnv),isCheckingAttributeCall , FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true,objTyOpt)
93889388
93899389 let preArgumentTypeCheckingCalledMethGroup =
93909390 [ for (minfo,pinfoOpt) in candidateMethsAndProps do
@@ -9483,7 +9483,7 @@ and TcMethodApplication
94839483 match tyargsOpt with
94849484 | Some tyargs -> minfo.AdjustUserTypeInstForFSharpStyleIndexedExtensionMembers(tyargs)
94859485 | None -> minst
9486- CalledMeth<Expr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall ,FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true,objTyOpt))
9486+ CalledMeth<Expr>(cenv.infoReader,Some(env.NameEnv),isCheckingAttributeCall ,FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true,objTyOpt))
94879487
94889488 let callerArgCounts = (unnamedCurriedCallerArgs.Length, namedCurriedCallerArgs.Length)
94899489 let csenv = MakeConstraintSolverEnv ContextInfo.NoContext cenv.css mMethExpr denv
@@ -9859,6 +9859,7 @@ and TcMethodApplication
98599859
98609860 // Handle post-hoc property assignments
98619861 let expr =
9862+ if isCheckingAttributeCall then expr else
98629863 if isNil finalAssignedItemSetters then expr else
98639864 // This holds the result of the call
98649865 let objv,objExpr = mkMutableCompGenLocal mMethExpr "returnVal" exprty // mutable in case it's a struct
@@ -10531,7 +10532,7 @@ and TcAttribute canFail cenv (env: TcEnv) attrTgt (synAttr: SynAttribute) =
1053110532 | Item.CtorGroup(methodName,minfos) ->
1053210533 let meths = minfos |> List.map (fun minfo -> minfo,None)
1053310534 let afterResolution = ForNewConstructors cenv.tcSink env tyid.idRange methodName minfos
10534- let (expr,namedCallerArgs ,_),_ =
10535+ let (expr,attributeAssignedNamedItems ,_),_ =
1053510536 TcMethodApplication true cenv env tpenv None [] mAttr mAttr methodName None ad PossiblyMutates false meths afterResolution NormalValUse [arg] (NewInferenceType ()) []
1053610537
1053710538 UnifyTypes cenv env mAttr ty (tyOfExpr cenv.g expr)
@@ -10540,9 +10541,9 @@ and TcAttribute canFail cenv (env: TcEnv) attrTgt (synAttr: SynAttribute) =
1054010541 AttribExpr(e,EvalLiteralExprOrAttribArg cenv.g e)
1054110542
1054210543 let namedAttribArgMap =
10543- namedCallerArgs |> List.map (fun (CallerNamedArg(id,CallerArg(argtyv,m,isOpt,expr ))) ->
10544+ attributeAssignedNamedItems |> List.map (fun (CallerNamedArg(id,CallerArg(argtyv,m,isOpt,callerArgExpr ))) ->
1054410545 if isOpt then error(Error(FSComp.SR.tcOptionalArgumentsCannotBeUsedInCustomAttribute(),m))
10545- let m =expr .Range
10546+ let m =callerArgExpr .Range
1054610547 let setterItem, _ = ResolveLongIdentInType cenv.tcSink cenv.nameResolver env.NameEnv LookupKind.Expr m ad [id] IgnoreOverrides TypeNameResolutionInfo.Default ty
1054710548 let nm, isProp, argty =
1054810549 match setterItem with
@@ -10568,7 +10569,7 @@ and TcAttribute canFail cenv (env: TcEnv) attrTgt (synAttr: SynAttribute) =
1056810569
1056910570 AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace argty argtyv
1057010571
10571- AttribNamedArg(nm,argty,isProp,mkAttribExprexpr ))
10572+ AttribNamedArg(nm,argty,isProp,mkAttribExprcallerArgExpr ))
1057210573
1057310574 match expr with
1057410575 | Expr.Op(TOp.ILCall(_,_,valu,_,_,_,_,ilMethRef,[],[],_rtys),[],args,m) ->