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

Commitae6f593

Browse files
vasily-kirichenkoKevinRansom
authored andcommitted
Add static members to the extended completion (#3949)
* add static members to the extended completion* provide static method in completion for any type
1 parent39d8459 commitae6f593

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

‎src/fsharp/vs/ServiceAssemblyContent.fs‎

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,18 @@ type AssemblyContentType = Public | Full
119119

120120
typeParent=
121121
{ Namespace:Idents option
122-
ThisRequiresQualifiedAccess:Idents option
123-
TopRequiresQualifiedAccess:Idents option
122+
ThisRequiresQualifiedAccess:(* isForMemberOrValue*) bool->Idents option
123+
TopRequiresQualifiedAccess:(* isForMemberOrValue*) bool->Idents option
124124
AutoOpen:Idents option
125-
WithModuleSuffix:Idents option}
125+
WithModuleSuffix:Idents option
126+
IsModule:bool}
126127
static memberEmpty=
127128
{ Namespace= None
128-
ThisRequiresQualifiedAccess= None
129-
TopRequiresQualifiedAccess= None
129+
ThisRequiresQualifiedAccess=fun _->None
130+
TopRequiresQualifiedAccess=fun _->None
130131
AutoOpen= None
131-
WithModuleSuffix= None}
132+
WithModuleSuffix= None
133+
IsModule=true}
132134
static memberRewriteParentIdents(parentIdents:Idents option)(idents:Idents)=
133135
match parentIdentswith
134136
| Some pwhen p.Length<= idents.Length->
@@ -190,8 +192,8 @@ module AssemblyContentProvider =
190192
{ FullName= fullName
191193
CleanedIdents= cleanIdents
192194
Namespace= ns
193-
NearestRequireQualifiedAccessParent= parent.ThisRequiresQualifiedAccess|> Option.map parent.FixParentModuleSuffix
194-
TopRequireQualifiedAccessParent= parent.TopRequiresQualifiedAccess|> Option.map parent.FixParentModuleSuffix
195+
NearestRequireQualifiedAccessParent= parent.ThisRequiresQualifiedAccessfalse|> Option.map parent.FixParentModuleSuffix
196+
TopRequireQualifiedAccessParent= parent.TopRequiresQualifiedAccessfalse|> Option.map parent.FixParentModuleSuffix
195197
AutoOpenParent= parent.AutoOpen|> Option.map parent.FixParentModuleSuffix
196198
Symbol= entity
197199
Kind=fun lookupType->
@@ -210,13 +212,14 @@ module AssemblyContentProvider =
210212

211213
letprivatetraverseMemberFunctionAndValues ns(parent:Parent)(membersFunctionsAndValues:seq<FSharpMemberOrFunctionOrValue>)=
212214
membersFunctionsAndValues
215+
|> Seq.filter(fun x->not x.IsInstanceMember)
213216
|> Seq.collect(fun func->
214217
letprocessIdents fullName idents=
215218
{ FullName= fullName
216219
CleanedIdents= parent.FixParentModuleSuffix idents
217220
Namespace= ns
218-
NearestRequireQualifiedAccessParent= parent.ThisRequiresQualifiedAccess|> Option.map parent.FixParentModuleSuffix
219-
TopRequireQualifiedAccessParent= parent.TopRequiresQualifiedAccess|> Option.map parent.FixParentModuleSuffix
221+
NearestRequireQualifiedAccessParent= parent.ThisRequiresQualifiedAccesstrue|> Option.map parent.FixParentModuleSuffix
222+
TopRequireQualifiedAccessParent= parent.TopRequiresQualifiedAccesstrue|> Option.map parent.FixParentModuleSuffix
220223
AutoOpenParent= parent.AutoOpen|> Option.map parent.FixParentModuleSuffix
221224
Symbol= func
222225
Kind=fun _-> EntityKind.FunctionOrValue func.IsActivePattern}
@@ -253,14 +256,14 @@ module AssemblyContentProvider =
253256
| Some x->yield x
254257
| None->()
255258

256-
letthisRequiresQualifierAccess=
257-
if entity.IsFSharp&& Symbol.hasAttribute<RequireQualifiedAccessAttribute> entity.Attributesthen
258-
parent.FormatEntityFullName entity|> Option.map snd
259-
else None
259+
letrqa= parent.FormatEntityFullName entity|> Option.map snd
260+
letrqaForType=if entity.IsFSharp&& Symbol.hasAttribute<RequireQualifiedAccessAttribute> entity.Attributesthen rqaelse None
261+
letthisRequiresQualifierAccess(isForMethodOrValue:bool)=if isForMethodOrValuethen rqaelse rqaForType
260262

261263
letcurrentParent=
262-
{ ThisRequiresQualifiedAccess= thisRequiresQualifierAccess|> Option.orElse parent.ThisRequiresQualifiedAccess
263-
TopRequiresQualifiedAccess= parent.TopRequiresQualifiedAccess|> Option.orElse thisRequiresQualifierAccess
264+
{ ThisRequiresQualifiedAccess= thisRequiresQualifierAccess>> Option.orElse(parent.ThisRequiresQualifiedAccessfalse)
265+
TopRequiresQualifiedAccess=fun forMV->(parent.TopRequiresQualifiedAccessfalse)|> Option.orElse(thisRequiresQualifierAccess forMV)
266+
264267
AutoOpen=
265268
letisAutoOpen= entity.IsFSharpModule&& Symbol.hasAttribute<AutoOpenAttribute> entity.Attributes
266269
match isAutoOpen, parent.AutoOpenwith
@@ -275,13 +278,14 @@ module AssemblyContentProvider =
275278
if entity.IsFSharpModule&& Symbol.hasModuleSuffixAttribute entitythen
276279
currentEntity|> Option.map(fun e-> e.CleanedIdents)
277280
else parent.WithModuleSuffix
278-
Namespace= ns}
279281

280-
if entity.IsFSharpModulethen
281-
match entity.TryGetMembersFunctionsAndValueswith
282-
| xswhen xs.Count>0->
283-
yield! traverseMemberFunctionAndValues ns currentParent xs
284-
|_->()
282+
Namespace= ns
283+
IsModule= entity.IsFSharpModule}
284+
285+
match entity.TryGetMembersFunctionsAndValueswith
286+
| xswhen xs.Count>0->
287+
yield! traverseMemberFunctionAndValues ns currentParent xs
288+
|_->()
285289

286290
for ein(try entity.NestedEntities:>_ seqwith_-> Seq.empty)do
287291
yield! traverseEntity contentType currentParent e

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp