@@ -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 }
126127static 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 }
132134static member RewriteParentIdents ( parentIdents : Idents option ) ( idents : Idents ) =
133135match 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
211213let private traverseMemberFunctionAndValues ns ( parent : Parent ) ( membersFunctionsAndValues : seq < FSharpMemberOrFunctionOrValue >) =
212214 membersFunctionsAndValues
215+ |> Seq.filter( fun x -> not x.IsInstanceMember)
213216|> Seq.collect( fun func ->
214217let 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.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- let thisRequiresQualifierAccess =
257- if entity.IsFSharp&& Symbol.hasAttribute< RequireQualifiedAccessAttribute> entity.Attributesthen
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.Attributesthen rqaelse None
261+ let thisRequiresQualifierAccess ( isForMethodOrValue : bool ) = if isForMethodOrValuethen rqaelse rqaForType
260262
261263let currentParent =
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=
265268let isAutoOpen = entity.IsFSharpModule&& Symbol.hasAttribute< AutoOpenAttribute> entity.Attributes
266269match isAutoOpen, parent.AutoOpenwith
@@ -275,13 +278,14 @@ module AssemblyContentProvider =
275278if entity.IsFSharpModule&& Symbol.hasModuleSuffixAttribute entitythen
276279 currentEntity|> Option.map( fun e -> e.CleanedIdents)
277280else 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
286290for ein ( try entity.NestedEntities:> _ seqwith _ -> Seq.empty) do
287291yield ! traverseEntity contentType currentParent e