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

Commit92a064b

Browse files
dsymelatkin
authored andcommitted
fix 299 - ReflectedDefinition on overloaded extension methods
fixesdotnet#299closesdotnet#432commit59fc4a9Author: Don Syme <donsyme@fastmail.fm>Date: Sat May 9 17:30:23 2015 +0100 fix 299 (3)commite901224Author: Don Syme <donsyme@fastmail.fm>Date: Sat May 9 17:26:52 2015 +0100 fix 299 (2)commit8ddd801Author: Don Syme <donsyme@fastmail.fm>Date: Sat May 9 17:26:32 2015 +0100 fix 299
1 parentdd6842a commit92a064b

File tree

2 files changed

+55
-1
lines changed

2 files changed

+55
-1
lines changed

‎src/fsharp/creflect.fs‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,7 +1001,7 @@ let ConvMethodBase cenv env (methName, v:Val) =
10011001
letparentTyconR= ConvTyconRef cenv v.TopValActualParent m
10021002

10031003
match v.MemberInfowith
1004-
| Some(vspr)whennot v.IsExtensionMember->
1004+
| Somevsprwhennot v.IsExtensionMember->
10051005

10061006
letvref= mkLocalValRef v
10071007
lettps,argInfos,retTy,_= GetTypeOfMemberInMemberForm cenv.g vref
@@ -1028,6 +1028,22 @@ let ConvMethodBase cenv env (methName, v:Val) =
10281028
methRetType= methRetTypeR;
10291029
methName= methName;
10301030
numGenericArgs=numGenericArgs}
1031+
1032+
|_when v.IsExtensionMember->
1033+
1034+
lettps,argInfos,retTy,_= GetTopValTypeInCompiledForm cenv.g v.ValReprInfo.Value v.Type v.Range
1035+
letargTys= argInfos|> List.concat|> List.map fst
1036+
letenvinner= BindFormalTypars env tps
1037+
letmethArgTypesR= ConvTypes cenv envinner m argTys
1038+
letmethRetTypeR= ConvReturnType cenv envinner m retTy
1039+
letnumGenericArgs= tps.Length
1040+
1041+
QP.MethodBaseData.Method
1042+
{ methParent= parentTyconR
1043+
methArgTypes= methArgTypesR
1044+
methRetType= methRetTypeR
1045+
methName= methName
1046+
numGenericArgs=numGenericArgs}
10311047
|_->
10321048

10331049
QP.MethodBaseData.ModuleDefn

‎tests/fsharp/core/quotes/test.fsx‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,6 +2684,44 @@ module NestedQuotations =
26842684

26852685
runAll()
26862686

2687+
moduleExtensionMembersWithSameName=
2688+
2689+
typeSystem.Objectwith
2690+
[<ReflectedDefinition>]
2691+
memberthis.Add(x)= x
2692+
[<ReflectedDefinition>]
2693+
memberthis.Add(x,y)= x+ y
2694+
[<ReflectedDefinition>]
2695+
static memberSAdd(x)= x
2696+
[<ReflectedDefinition>]
2697+
static memberSAdd(x,y)= x+ y
2698+
2699+
letrunAll()=
2700+
match<@ obj().Add(2)@>with
2701+
|(Patterns.Call(_, m,_))->
2702+
lettext= m|> Expr.TryGetReflectedDefinition|> sprintf"%A"
2703+
check"clewwenf094" text"Some Lambda (this, Lambda (x, x))"
2704+
|_-> failwith"unexpected shape"
2705+
2706+
match<@ obj().Add(2,3)@>with
2707+
|(Patterns.Call(_, m,_))->
2708+
lettext= m|> Expr.TryGetReflectedDefinition|> sprintf"%A"
2709+
check"clewwenf095"(m.GetParameters().Length)3
2710+
|_-> failwith"unexpected shape"
2711+
2712+
match<@ obj.SAdd(2)@>with
2713+
|(Patterns.Call(_, m,_))->
2714+
lettext= m|> Expr.TryGetReflectedDefinition|> sprintf"%A"
2715+
check"clewwenf096" text"Some Lambda (x, x)"
2716+
|_-> failwith"unexpected shape"
2717+
2718+
match<@ obj.SAdd(2,3)@>with
2719+
|(Patterns.Call(_, m,_))->
2720+
lettext= m|> Expr.TryGetReflectedDefinition|> sprintf"%A"
2721+
check"clewwenf097"(m.GetParameters().Length)2
2722+
|_-> failwith"unexpected shape"
2723+
2724+
runAll()
26872725

26882726
letaa=
26892727
ifnot failures.IsEmptythen(printfn"Test Failed, failures =%A" failures; exit1)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp