@@ -2459,7 +2459,7 @@ type ResolveCompletionTargets =
24592459member this.ResolveAll =
24602460match thiswith
24612461| All_ -> true
2462- | _ -> false
2462+ | SettablePropertiesAndFields -> false
24632463
24642464/// Resolve a (possibly incomplete) long identifier to a set of possible resolutions, qualified by type.
24652465let ResolveCompletionsInType ( ncenv : NameResolver ) nenv ( completionTargets : ResolveCompletionTargets ) m ad statics typ =
@@ -2535,7 +2535,7 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso
25352535let minfoFilter ( minfo : MethInfo ) =
25362536let isApplicableMeth =
25372537match completionTargetswith
2538- | ResolveCompletionTargets.AllisApplicableMeth -> isApplicableMeth
2538+ | ResolveCompletionTargets.Allx -> x
25392539| _ -> failwith" internal error: expected completionTargets = ResolveCompletionTargets.All"
25402540// Only show the Finalize, MemberwiseClose etc. methods on System.Object for values whose static type really is
25412541// System.Object. Few of these are typically used from F#.
@@ -2581,24 +2581,30 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso
25812581| _ -> pinfos
25822582
25832583 pinfos
2584- |> List.map( fun pinfo -> DecodeFSharpEvent[ pinfo] ad g ncenv m)
2585- |> List.filter( fun pinfo ->
2586- match pinfowith
2587- | Some( Item.Event( einfo)) -> completionTargets.ResolveAll&& IsStandardEventInfo ncenv.InfoReader m ad einfo
2588- | _ -> pinfo.IsSome)
2589- |> List.map( fun pinfo -> pinfo.Value)
2584+ |> List.choose( fun pinfo ->
2585+ let pinfoOpt = DecodeFSharpEvent[ pinfo] ad g ncenv m
2586+ match pinfoOpt, completionTargetswith
2587+ | Some( Item.Event( einfo)), ResolveCompletionTargets.All_ -> if IsStandardEventInfo ncenv.InfoReader m ad einfothen pinfoOptelse None
2588+ | _ -> pinfoOpt)
25902589
25912590// REVIEW: add a name filter here in the common cases?
25922591let minfos =
25932592if completionTargets.ResolveAllthen
2593+ let minfos =
2594+ AllMethInfosOfTypeInScope ncenv.InfoReader nenv( None, ad) PreferOverrides m typ
2595+ |> List.filter minfoFilter
2596+
25942597let addersAndRemovers =
25952598 pinfoItems
25962599|> List.map( function Item.Event( FSEvent(_,_, addValRef, removeValRef)) -> [ addValRef.LogicalName; removeValRef.LogicalName] | _ -> [])
25972600|> List.concat
25982601
2599- AllMethInfosOfTypeInScope ncenv.InfoReader nenv( None, ad) PreferOverrides m typ
2600- |> List.filter minfoFilter
2601- |> List.filter( fun minfo -> not ( addersAndRemovers|> List.exists( fun ar -> ar= minfo.LogicalName)))
2602+ match addersAndRemoverswith
2603+ | [] -> minfos
2604+ | addersAndRemovers->
2605+ let isNotAdderOrRemover ( minfo : MethInfo ) = not ( addersAndRemovers|> List.exists( fun ar -> ar= minfo.LogicalName))
2606+ List.filter isNotAdderOrRemover minfos
2607+
26022608else []
26032609// Partition methods into overload sets
26042610let rec partitionl ( l : MethInfo list ) acc =