Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd9348ec

Browse files
xepaullatkin
authored andcommitted
Support for extension property initializers
Closesdotnet#17commit 3d639ab68e247b52bbbbcc83d48b908e7db447afAuthor: latkin <latkin@microsoft.com>Date: Thu Jan 15 13:43:40 2015 -0800 Cleaning up tests configscommitcbf4d76Author: Steffen Forkmann <steffen.forkmann@msu-solutions.de>Date: Thu Jan 15 16:38:35 2015 +0100 Fix calls in #if EXTENSIONTYPINGcommitfd548e3Author: Steffen Forkmann <steffen.forkmann@msu-solutions.de>Date: Thu Jan 15 16:21:08 2015 +0100 Reorder build order in proto-Compilercommit8968e4fAuthor: xepaul <edwardpaul44@gmail.com>Date: Tue Nov 18 23:59:43 2014 +0000 Added Testscommit3fd4931Author: xepaul <edwardpaul44@gmail.com>Date: Thu Nov 13 23:27:27 2014 +0000 type argument bug fixcommit848cacfAuthor: xepaul <edwardpaul44@gmail.com>Date: Sun Sep 7 15:36:49 2014 +0100 Changes following PR comments :- match styling change. added open module to remove fully qualified path removed unnecessary comment "//need to hide" added during prototypingcommit0b2381fAuthor: xepaul <edwardpaul44@gmail.com>Date: Tue Jul 22 01:38:18 2014 +0100 Experiment to support assigning values to extension properties at initialization
1 parentca40a40 commitd9348ec

File tree

10 files changed

+200
-40
lines changed

10 files changed

+200
-40
lines changed

‎src/fsharp/FSharp.Compiler-proto/FSharp.Compiler-proto.fsproj‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,18 @@
307307
<CompileInclude="..\augment.fs">
308308
<Link>augment.fs</Link>
309309
</Compile>
310+
<CompileInclude="..\outcome.fsi">
311+
<Link>outcome.fsi</Link>
312+
</Compile>
313+
<CompileInclude="..\outcome.fs">
314+
<Link>outcome.fs</Link>
315+
</Compile>
316+
<CompileInclude="..\nameres.fsi">
317+
<Link>nameres.fsi</Link>
318+
</Compile>
319+
<CompileInclude="..\nameres.fs">
320+
<Link>nameres.fs</Link>
321+
</Compile>
310322
<CompileInclude="..\typrelns.fs">
311323
<Link>typrelns.fs</Link>
312324
</Compile>
@@ -315,12 +327,6 @@
315327
</Compile>
316328
<CompileInclude="..\patcompile.fs">
317329
<Link>patcompile.fs</Link>
318-
</Compile>
319-
<CompileInclude="..\outcome.fsi">
320-
<Link>outcome.fsi</Link>
321-
</Compile>
322-
<CompileInclude="..\outcome.fs">
323-
<Link>outcome.fs</Link>
324330
</Compile>
325331
<CompileInclude="..\csolve.fsi">
326332
<Link>csolve.fsi</Link>
@@ -333,12 +339,6 @@
333339
</Compile>
334340
<CompileInclude="..\formats.fs">
335341
<Link>formats.fs</Link>
336-
</Compile>
337-
<CompileInclude="..\nameres.fsi">
338-
<Link>nameres.fsi</Link>
339-
</Compile>
340-
<CompileInclude="..\nameres.fs">
341-
<Link>nameres.fs</Link>
342342
</Compile>
343343
<CompileInclude="..\unsolved.fs">
344344
<Link>unsolved.fs</Link>

‎src/fsharp/csolve.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) permitWeakResolution ndeep
12041204
letcallerArgs= argtys|> List.map(fun argty-> CallerArg(argty,m,false,dummyExpr))
12051205
letminst= FreshenMethInfo m minfo
12061206
letobjtys= minfo.GetObjArgTypes(amap, m, minst)
1207-
CalledMeth<Expr>(csenv.InfoReader,false,FreshenMethInfo,m,AccessibleFromEverywhere,minfo,minst,minst,None,objtys,[(callerArgs,[])],false,false))
1207+
CalledMeth<Expr>(csenv.InfoReader,None,false,FreshenMethInfo,m,AccessibleFromEverywhere,minfo,minst,minst,None,objtys,[(callerArgs,[])],false,false,None))
12081208

12091209
letmethOverloadResult,errors=
12101210
CollectThenUndo(fun trace-> ResolveOverloading csenv(WithTrace(trace)) nm ndeeptrue(0,0) AccessibleFromEverywhere calledMethGroupfalse(Some rty))

‎src/fsharp/nameres.fsi‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@ val internal CallExprHasTypeSink : TcResultsSink -> range * NameResolutio
206206
/// Get all the available properties of a type(both intrinsic and extension)
207207
val internal AllPropInfosOfTypeInScope: InfoReader-> NameResolutionEnv-> string option* AccessorDomain-> FindMemberFlag-> range-> TType-> PropInfo list
208208

209+
/// Get all the available properties of a type(only extension)
210+
val internal ExtensionPropInfosOfTypeInScope: InfoReader-> NameResolutionEnv-> string option* AccessorDomain-> range-> TType-> PropInfo list
211+
209212
/// Get the available methods of a type(both declared and inherited)
210213
val internal AllMethInfosOfTypeInScope: InfoReader-> NameResolutionEnv-> string option* AccessorDomain-> FindMemberFlag-> range-> TType-> MethInfo list
211214

‎src/fsharp/tc.fs‎

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5775,7 +5775,7 @@ and TcCtorCall isNaked cenv env tpenv overallTy objTy mObjTyOpt item superInit a
57755775
| Some mObjTy,None -> AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env mObjTy methodName minfos
57765776
| None, _ -> AfterTcOverloadResolution.DoNothing
57775777

5778-
TcMethodApplicationThen cenv env overallTy tpenv None [] mWholeCall mItem methodName ad PossiblyMutates false meths afterTcOverloadResolution isSuperInit args ExprAtomicFlag.NonAtomic delayed
5778+
TcMethodApplicationThen cenv env overallTy(Some objTy)tpenv None [] mWholeCall mItem methodName ad PossiblyMutates false meths afterTcOverloadResolution isSuperInit args ExprAtomicFlag.NonAtomic delayed
57795779

57805780
| Item.DelegateCtor typ, [arg] ->
57815781
// Re-record the name resolution since we now know it's a constructor call
@@ -6137,7 +6137,7 @@ and TcObjectExpr cenv overallTy env tpenv (synObjTy,argopt,binds,extraImpls,mNew
61376137
let afterTcOverloadResolution = AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env synObjTy.Range methodName minfos
61386138
let ad = env.eAccessRights
61396139

6140-
let expr,tpenv = TcMethodApplicationThen cenv env objTy tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterTcOverloadResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic []
6140+
let expr,tpenv = TcMethodApplicationThen cenv env objTyNonetpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterTcOverloadResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic []
61416141
// The 'base' value is always bound
61426142
let baseIdOpt = (match baseIdOpt with None -> Some(ident("base",mObjTy)) | Some id -> Some(id))
61436143
expr,baseIdOpt,tpenv
@@ -8018,7 +8018,7 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
80188018
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForMethods
80198019
match delayed with
80208020
| (DelayedApp (atomicFlag, arg, mExprAndArg)::otherDelayed) ->
8021-
TcMethodApplicationThen cenv env overallTy tpenv None [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
8021+
TcMethodApplicationThen cenv env overallTyNonetpenv None [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
80228022

80238023
| (DelayedTypeApp(tys, mTypeArgs, mExprAndTypeArgs) :: DelayedApp(atomicFlag, arg, mExprAndArg) :: otherDelayed) ->
80248024

@@ -8028,7 +8028,7 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
80288028

80298029
// // NOTE: This doesn't take instantiation into account
80308030
// CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs,env.NameEnv,item (* ! *), item, ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
8031-
TcMethodApplicationThen cenv env overallTy tpenv None [] mExprAndArg mItem methodName ad NeverMutates false [(minfoAfterStaticArguments, None)] afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
8031+
TcMethodApplicationThen cenv env overallTyNonetpenv None [] mExprAndArg mItem methodName ad NeverMutates false [(minfoAfterStaticArguments, None)] afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
80328032

80338033
| None ->
80348034
#endif
@@ -8037,9 +8037,9 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
80378037

80388038
// NOTE: This doesn't take instantiation into account
80398039
CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs,env.NameEnv,item (* ! *), item, ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
8040-
TcMethodApplicationThen cenv env overallTy tpenv (Some tyargs) [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
8040+
TcMethodApplicationThen cenv env overallTyNonetpenv (Some tyargs) [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
80418041
| _ ->
8042-
TcMethodApplicationThen cenv env overallTy tpenv None [] mItem mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [] ExprAtomicFlag.Atomic delayed
8042+
TcMethodApplicationThen cenv env overallTyNonetpenv None [] mItem mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [] ExprAtomicFlag.Atomic delayed
80438043

80448044
| Item.CtorGroup(nm,minfos) ->
80458045
let objTy =
@@ -8206,14 +8206,14 @@ and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution
82068206
if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm,mItem))
82078207
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm SettersOfPropInfos
82088208
// Note: static calls never mutate a struct object argument
8209-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt [] mStmt mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse (args@[e2]) ExprAtomicFlag.NonAtomic otherDelayed
8209+
TcMethodApplicationThen cenv env overallTyNonetpenv tyargsOpt [] mStmt mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse (args@[e2]) ExprAtomicFlag.NonAtomic otherDelayed
82108210
| _ ->
82118211
// Static Property Get (possibly indexer)
82128212
let meths = pinfos |> GettersOfPropInfos
82138213
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm GettersOfPropInfos
82148214
if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable(nm),mItem))
82158215
// Note: static calls never mutate a struct object argument
8216-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse args ExprAtomicFlag.Atomic delayed
8216+
TcMethodApplicationThen cenv env overallTyNonetpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse args ExprAtomicFlag.Atomic delayed
82178217

82188218
| Item.ILField finfo ->
82198219

@@ -8345,14 +8345,14 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
83458345

83468346
#if EXTENSIONTYPING
83478347
match TryTcMethodAppToStaticConstantArgs cenv env tpenv (minfos, tyargsOpt, mExprAndItem, mItem) with
8348-
| Some minfo -> TcMethodApplicationThen cenv env overallTy tpenv None objArgs mExprAndItem mItem methodName ad mutates false [(minfo, None)] afterTcOverloadResolution NormalValUse args atomicFlag delayed
8348+
| Some minfo -> TcMethodApplicationThen cenv env overallTyNonetpenv None objArgs mExprAndItem mItem methodName ad mutates false [(minfo, None)] afterTcOverloadResolution NormalValUse args atomicFlag delayed
83498349
| None ->
83508350
#endif
83518351

83528352
let tyargsOpt,tpenv = TcMemberTyArgsOpt cenv env tpenv tyargsOpt
83538353
let meths = minfos |> List.map (fun minfo -> minfo,None)
83548354

8355-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mExprAndItem mItem methodName ad mutates false meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
8355+
TcMethodApplicationThen cenv env overallTyNonetpenv tyargsOpt objArgs mExprAndItem mItem methodName ad mutates false meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
83568356

83578357
| Item.Property (nm,pinfos) ->
83588358
// Instance property
@@ -8377,13 +8377,13 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
83778377
if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm,mItem))
83788378
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm SettersOfPropInfos
83798379
let mut = (if isStructTy cenv.g (tyOfExpr cenv.g objExpr) then DefinitelyMutates else PossiblyMutates)
8380-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mStmt mItem nm ad mut true meths afterTcOverloadResolution NormalValUse (args @ [e2]) atomicFlag []
8380+
TcMethodApplicationThen cenv env overallTyNonetpenv tyargsOpt objArgs mStmt mItem nm ad mut true meths afterTcOverloadResolution NormalValUse (args @ [e2]) atomicFlag []
83818381
| _ ->
83828382
// Instance property getter
83838383
let meths = GettersOfPropInfos pinfos
83848384
if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable(nm),mItem))
83858385
let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm GettersOfPropInfos
8386-
TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
8386+
TcMethodApplicationThen cenv env overallTyNonetpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterTcOverloadResolution NormalValUse args atomicFlag delayed
83878387

83888388
| Item.RecdField rfinfo ->
83898389
// Get or set instance F# field or literal
@@ -8488,6 +8488,7 @@ and TcMethodApplicationThen
84888488
env
84898489
overallTy // The type of the overall expression including "delayed". THe method "application" may actually be a use of a member as
84908490
// a first-class function value, when this would be a function type.
8491+
objTyOpt // methodType
84918492
tpenv
84928493
callerTyArgs // The return type of the overall expression including "delayed"
84938494
objArgs // The 'obj' arguments in obj.M(...) and obj.M, if any
@@ -8514,7 +8515,7 @@ and TcMethodApplicationThen
85148515

85158516
// Call the helper below to do the real checking
85168517
let (expr,attributeAssignedNamedItems,delayed),tpenv =
8517-
TcMethodApplication false cenv env tpenv callerTyArgs objArgs mWholeExpr mItem methodName ad mut isProp meths afterTcOverloadResolution isSuperInit args exprTy delayed
8518+
TcMethodApplication false cenv env tpenv callerTyArgs objArgs mWholeExpr mItem methodNameobjTyOptad mut isProp meths afterTcOverloadResolution isSuperInit args exprTy delayed
85188519

85198520
// Give errors if some things couldn't be assigned
85208521
if nonNil attributeAssignedNamedItems then
@@ -8545,6 +8546,7 @@ and TcMethodApplication
85458546
mMethExpr // range of the entire method expression
85468547
mItem
85478548
methodName
8549+
(objTyOpt : TType option)
85488550
ad
85498551
mut
85508552
isProp
@@ -8741,7 +8743,7 @@ and TcMethodApplication
87418743
| Some tyargs -> minfo.AdjustUserTypeInstForFSharpStyleIndexedExtensionMembers(tyargs)
87428744
| None -> minst
87438745
let allArgs = List.zip unnamedCurriedCallerArgs namedCurriedCallerArgs
8744-
CalledMeth<SynExpr>(cenv.infoReader,checkingAttributeCall, FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,allArgs,usesParamArrayConversion,true)
8746+
CalledMeth<SynExpr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall, FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,allArgs,usesParamArrayConversion,true,objTyOpt)
87458747

87468748
let preArgumentTypeCheckingCalledMethGroup =
87478749
[ for (minfo,pinfoOpt) in candidateMethsAndProps do
@@ -8834,7 +8836,7 @@ and TcMethodApplication
88348836
| Some tyargs -> minfo.AdjustUserTypeInstForFSharpStyleIndexedExtensionMembers(tyargs)
88358837
| None -> minst
88368838
let callerArgs = List.zip unnamedCurriedCallerArgs namedCurriedCallerArgs
8837-
CalledMeth<Expr>(cenv.infoReader,checkingAttributeCall,FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true))
8839+
CalledMeth<Expr>(cenv.infoReader,Some(env.NameEnv),checkingAttributeCall,FreshenMethInfo, mMethExpr,ad,minfo,minst,callerTyArgs,pinfoOpt,callerObjArgTys,callerArgs,usesParamArrayConversion,true,objTyOpt))
88388840

88398841
let callerArgCounts = (unnamedCurriedCallerArgs.Length, namedCurriedCallerArgs.Length)
88408842
let csenv = MakeConstraintSolverEnv cenv.css mMethExpr denv
@@ -9713,7 +9715,7 @@ and TcAttribute cenv (env: TcEnv) attrTgt (synAttr: SynAttribute) =
97139715
let meths = minfos |> List.map (fun minfo -> minfo,None)
97149716
let afterTcOverloadResolution = AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env tyid.idRange methodName minfos
97159717
let (expr,namedCallerArgs,_),_ =
9716-
TcMethodApplication true cenv env tpenv None [] mAttr mAttr methodName ad PossiblyMutates false meths afterTcOverloadResolution NormalValUse [arg] (NewInferenceType ()) []
9718+
TcMethodApplication true cenv env tpenv None [] mAttr mAttr methodNameNonead PossiblyMutates false meths afterTcOverloadResolution NormalValUse [arg] (NewInferenceType ()) []
97179719

97189720
UnifyTypes cenv env mAttr ty (tyOfExpr cenv.g expr)
97199721

‎src/fsharp/typrelns.fs‎

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ open Microsoft.FSharp.Compiler.Lib
2525
openMicrosoft.FSharp.Compiler.Infos
2626
openMicrosoft.FSharp.Compiler.PrettyNaming
2727
openMicrosoft.FSharp.Compiler.Infos.AccessibilityLogic
28+
openMicrosoft.FSharp.Compiler.Nameres
2829

2930
#if EXTENSIONTYPING
3031
openMicrosoft.FSharp.Compiler.ExtensionTyping
@@ -1630,6 +1631,7 @@ let MakeCalledArgs amap m (minfo:MethInfo) minst =
16301631
/// and returns a CalledMeth object for further analysis.
16311632
typeCalledMeth<'T>
16321633
(infoReader:InfoReader,
1634+
nameEnv: Microsoft.FSharp.Compiler.Nameres.NameResolutionEnv option,
16331635
isCheckingAttributeCall,
16341636
freshenMethInfo,// afunctionto help generate fresh type variables the property setters methodsin generic classes
16351637
m,
@@ -1641,7 +1643,8 @@ type CalledMeth<'T>
16411643
callerObjArgTys: TType list,// the types of the actual object argument, if any
16421644
curriedCallerArgs:(CallerArg<'T> list* CallerNamedArg<'T> list) list,// the data about any arguments supplied by the caller
16431645
allowParamArgs:bool,// do we allow the use of a param args method in its "expanded" form?
1644-
allowOutAndOptArgs: bool)// do we allow the use of the transformation that converts out arguments as tuple returns?
1646+
allowOutAndOptArgs: bool,// do we allow the use of the transformation that converts out arguments as tuple returns?
1647+
tyargsOpt: TType option)// method parameters
16451648
=
16461649
letg= infoReader.g
16471650
letmethodRetTy= minfo.GetFSharpReturnTy(infoReader.amap, m, calledTyArgs)
@@ -1726,15 +1729,31 @@ type CalledMeth<'T>
17261729
letpminst= freshenMethInfo m pminfo
17271730
Choice1Of2(AssignedItemSetter(id,AssignedPropSetter(pinfo,pminfo, pminst), e))
17281731
|_->
1729-
match infoReader.GetILFieldInfosOfType(Some(nm),ad,m,returnedObjTy)with
1730-
| finfo::_->
1731-
Choice1Of2(AssignedItemSetter(id,AssignedILFieldSetter(finfo), e))
1732-
|_->
1733-
match infoReader.TryFindRecdOrClassFieldInfoOfType(nm,m,returnedObjTy)with
1734-
| Some rfinfo->
1735-
Choice1Of2(AssignedItemSetter(id,AssignedRecdFieldSetter(rfinfo), e))
1736-
| None->
1737-
Choice2Of2(arg))
1732+
letepinfos=
1733+
match nameEnvwith
1734+
| Some(ne)-> ExtensionPropInfosOfTypeInScope infoReader ne(Some(nm), ad) m returnedObjTy
1735+
|_->[]
1736+
match epinfoswith
1737+
|[pinfo]when pinfo.HasSetter&&not pinfo.IsIndexer->
1738+
letpminfo= pinfo.SetterMethod
1739+
letpminst=match minfowith
1740+
| MethInfo.FSMeth(_,TType.TType_app(_,types),_,_)-> types
1741+
|_-> freshenMethInfo m pminfo
1742+
1743+
letpminst=match tyargsOptwith
1744+
| Some(TType.TType_app(_, types))-> types
1745+
|_-> pminst
1746+
Choice1Of2(AssignedItemSetter(id,AssignedPropSetter(pinfo,pminfo, pminst), e))
1747+
|_->
1748+
match infoReader.GetILFieldInfosOfType(Some(nm),ad,m,returnedObjTy)with
1749+
| finfo::_->
1750+
Choice1Of2(AssignedItemSetter(id,AssignedILFieldSetter(finfo), e))
1751+
|_->
1752+
match infoReader.TryFindRecdOrClassFieldInfoOfType(nm,m,returnedObjTy)with
1753+
| Some rfinfo->
1754+
Choice1Of2(AssignedItemSetter(id,AssignedRecdFieldSetter(rfinfo), e))
1755+
| None->
1756+
Choice2Of2(arg))
17381757

17391758
letnames= namedCallerArgs|> List.map(fun(CallerNamedArg(nm,_))-> nm.idText)
17401759

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp