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

Commit4064694

Browse files
authored
Fixed byref extension methods from not showing up in completions (dotnet#5552)
1 parent1ac49af commit4064694

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

‎src/fsharp/ConstraintSolver.fs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2765,6 +2765,7 @@ let IsApplicableMethApprox g amap m (minfo:MethInfo) availObjTy =
27652765
letminst= FreshenMethInfo m minfo
27662766
match minfo.GetObjArgTypes(amap, m, minst)with
27672767
|[reqdObjTy]->
2768+
letreqdObjTy=if isByrefTy g reqdObjTythen destByrefTy g reqdObjTyelse reqdObjTy// This is to support byref extension methods.
27682769
TryD(fun()-> SolveTypeSubsumesType csenv0 m NoTrace None reqdObjTy availObjTy++(fun()-> ResultDtrue))
27692770
(fun _err-> ResultDfalse)
27702771
|> CommitOperationResult

‎vsintegration/tests/UnitTests/CompletionProviderTests.fs‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,34 @@ module M2 =
602602
"""
603603
VerifyCompletionList(fileContents," Ext",["Extensions";"ExtraTopLevelOperators"],[])
604604

605+
[<Test>]
606+
let``Byref Extension Methods``()=
607+
letfileContents="""
608+
module Extensions =
609+
open System
610+
open System.Runtime.CompilerServices
611+
612+
[<Struct>]
613+
type Message = Message of String
614+
615+
[<Sealed; AbstractClass; Extension>]
616+
type MessageExtensions private () =
617+
let (|Message|) (Message message) = message
618+
619+
[<Extension>]
620+
static member Print (Message message : Message) =
621+
printfn "%s" message
622+
623+
[<Extension>]
624+
static member PrintRef (Message message : inref<Message>) =
625+
printfn "%s" message
626+
627+
let wrappedMessage = Message "Hello World"
628+
629+
wrappedMessage.
630+
"""
631+
VerifyCompletionList(fileContents,"wrappedMessage.",["PrintRef"],[])
632+
605633
#if EXE
606634
ShouldDisplaySystemNamespace()
607635
#endif

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp