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

Commit3fd4931

Browse files
xepaulforki
authored andcommitted
type argument bug fix
1 parent848cacf commit3fd4931

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

‎src/fsharp/typrelns.fs‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,10 +1735,11 @@ type CalledMeth<'T>
17351735
match epinfoswith
17361736
|[pinfo]when pinfo.HasSetter&&not pinfo.IsIndexer->
17371737
letpminfo= pinfo.SetterMethod
1738-
letpminst= freshenMethInfo m pminfo
1738+
letpminst=match minfowith
1739+
| MethInfo.FSMeth(_,TType.TType_app(_,types),_,_)-> types
1740+
|_-> freshenMethInfo m pminfo
17391741
Choice1Of2(AssignedItemSetter(id,AssignedPropSetter(pinfo,pminfo, pminst), e))
1740-
|_->
1741-
1742+
|_->
17421743
match infoReader.GetILFieldInfosOfType(Some(nm),ad,m,returnedObjTy)with
17431744
| finfo::_->
17441745
Choice1Of2(AssignedItemSetter(id,AssignedILFieldSetter(finfo), e))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// #Regression #Conformance #DeclarationElements #MemberDefinitions #NamedArguments
2+
#light
3+
4+
// FSB 1368, named arguments implicitly using property setters for generic class do not typecheck correctly
5+
6+
moduleGenericClass=
7+
typeS<'a,'b>=
8+
class
9+
val mutablex:'a
10+
val mutabley:'b
11+
memberobj.Xwith set(v)= obj.x<- v
12+
memberobj.Ywith set(v)= obj.y<- v
13+
new(a,b)={ x=a; y=b}
14+
end
15+
typeS<'a,'b>with
16+
memberx.XProxyIntrinsicwith set(v:'a)= x.X<- v
17+
memberx.YProxyIntrinsicwith set(v:'b)= x.Y<- v
18+
moduleExtensions=
19+
typeS<'a,'b>with
20+
memberx.XProxyOptionalwith set(v:'a)= x.X<- v
21+
memberx.YProxyOptionalwith set(v:'b)= x.Y<- v
22+
23+
openExtensions
24+
25+
// Standard construction
26+
letx1= S<int,string>(1,"1", XProxyIntrinsic=42, YProxyIntrinsic="42")
27+
if x1.x<>42then exit1
28+
if x1.y<>"42"then exit1
29+
30+
letx2= S<_,_>(1,"1")
31+
x2.XProxyOptional<-43
32+
x2.YProxyOptional<-"43"
33+
if x2.x<>43then exit1
34+
if x2.y<>"43"then exit1
35+
36+
letx3= S<_,_>(1,"1", XProxyOptional=44, YProxyOptional="44")
37+
if x3.x<>44then exit1
38+
if x3.y<>"44"then exit1
39+
exit0
40+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp