@@ -119,16 +119,18 @@ type AssemblyContentType = Public | Full
119119
120120type Parent =
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 member Empty =
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 member RewriteParentIdents ( parentIdents : Idents option ) ( idents : Idents ) =
133135 match parentIdents with
134136 | Some p when 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.ThisRequiresQualifiedAccess false |> Option.map parent.FixParentModuleSuffix
196+ TopRequireQualifiedAccessParent = parent.TopRequiresQualifiedAccess false |> 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 let private traverseMemberFunctionAndValues ns ( parent : Parent ) ( membersFunctionsAndValues : seq < FSharpMemberOrFunctionOrValue >) =
212214 membersFunctionsAndValues
215+ |> Seq.filter ( fun x -> not x.IsInstanceMember)
213216 |> Seq.collect ( fun func ->
214217 let processIdents 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.ThisRequiresQualifiedAccess true |> Option.map parent.FixParentModuleSuffix
222+ TopRequireQualifiedAccessParent = parent.TopRequiresQualifiedAccess true |> 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- let thisRequiresQualifierAccess =
257- if entity.IsFSharp && Symbol.hasAttribute< RequireQualifiedAccessAttribute> entity.Attributes then
258- parent.FormatEntityFullName entity |> Option.map snd
259- else None
259+ let rqa = parent.FormatEntityFullName entity |> Option.map snd
260+ let rqaForType = if entity.IsFSharp && Symbol.hasAttribute< RequireQualifiedAccessAttribute> entity.Attributes then rqa else None
261+ let thisRequiresQualifierAccess ( isForMethodOrValue : bool ) = if isForMethodOrValue then rqa else rqaForType
260262
261263 let currentParent =
262- { ThisRequiresQualifiedAccess = thisRequiresQualifierAccess |> Option.orElse parent.ThisRequiresQualifiedAccess
263- TopRequiresQualifiedAccess = parent.TopRequiresQualifiedAccess |> Option.orElse thisRequiresQualifierAccess
264+ { ThisRequiresQualifiedAccess = thisRequiresQualifierAccess >> Option.orElse ( parent.ThisRequiresQualifiedAccess false )
265+ TopRequiresQualifiedAccess = fun forMV -> ( parent.TopRequiresQualifiedAccess false ) |> Option.orElse ( thisRequiresQualifierAccess forMV)
266+
264267 AutoOpen =
265268 let isAutoOpen = entity.IsFSharpModule && Symbol.hasAttribute< AutoOpenAttribute> entity.Attributes
266269 match isAutoOpen, parent.AutoOpen with
@@ -275,13 +278,14 @@ module AssemblyContentProvider =
275278 if entity.IsFSharpModule && Symbol.hasModuleSuffixAttribute entity then
276279 currentEntity |> Option.map ( fun e -> e.CleanedIdents)
277280 else parent.WithModuleSuffix
278- Namespace = ns }
279281
280- if entity.IsFSharpModule then
281- match entity.TryGetMembersFunctionsAndValues with
282- | xs when xs.Count > 0 ->
283- yield ! traverseMemberFunctionAndValues ns currentParent xs
284- | _ -> ()
282+ Namespace = ns
283+ IsModule = entity.IsFSharpModule }
284+
285+ match entity.TryGetMembersFunctionsAndValues with
286+ | xs when xs.Count > 0 ->
287+ yield ! traverseMemberFunctionAndValues ns currentParent xs
288+ | _ -> ()
285289
286290 for e in ( try entity.NestedEntities :> _ seq with _ -> Seq.empty) do
287291 yield ! traverseEntity contentType currentParent e
0 commit comments