@@ -557,6 +557,65 @@ type AutoCompletionListTests() as this =
557557 AssertCtrlSpaceCompleteContains( typeDef@ [ " open Ext" ; " A((**))" ]) " A((**)" [ " XYZ" ] [] // positive
558558 AssertCtrlSpaceCompleteContains( typeDef@ [ " A((**))" ]) " A((**)" [] [ " XYZ" ] // negative
559559
560+ [<Test>]
561+ [<Category( " Completion in object initializer" ) >]
562+ member public this. ``ObjectInitializer.CompletionForNamedParameters`` () =
563+ let typeDef1 =
564+ [
565+ " type A ="
566+ " static member Run(xyz: int, zyx: string) = 1"
567+ ]
568+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run()" ]) " .Run(" [ " xyz" ; " zyx" ] []
569+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run(x = 1)" ]) " .Run(x" [ " xyz" ] []
570+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run(x = 1,)" ]) " .Run(x = 1," [ " xyz" ; " zyx" ] []
571+
572+ let typeDef2 =
573+ [
574+ " type A ="
575+ " static member Run<'T>(xyz: 'T, zyx: string) = 1"
576+ ]
577+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run()" ]) " .Run(" [ " xyz" ; " zyx" ] []
578+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run(x = 1)" ]) " .Run(x" [ " xyz" ] []
579+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run(x = 1,)" ]) " .Run(x = 1," [ " xyz" ; " zyx" ] []
580+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>()" ]) " .Run<_>(" [ " xyz" ; " zyx" ] []
581+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>(x = 1)" ]) " .Run<_>(x" [ " xyz" ] []
582+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>(x = 1,)" ]) " .Run<_>(x = 1," [ " xyz" ; " zyx" ] []
583+
584+ [<Test>]
585+ [<Category( " Completion in object initializer" ) >]
586+ member public this. ``ObjectInitializer.CompletionForSettablePropertiesInReturnValue`` () =
587+ let typeDef1 =
588+ [
589+ " type A0() = member val Settable0 = 1 with get,set"
590+ " type A() ="
591+ " member val Settable = 1 with get,set"
592+ " member val NonSettable = 1"
593+ " static member Run(): A0 = Unchecked.defaultof<_>"
594+ " static member Run(a: string): A = Unchecked.defaultof<_>"
595+ ]
596+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run()" ]) " .Run(" [ " Settable" ; " Settable0" ] [ " NonSettable" ]
597+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run(S = 1)" ]) " .Run(S" [ " Settable" ; " Settable0" ] [ " NonSettable" ]
598+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run(S = 1,)" ]) " .Run(S = 1," [ " Settable" ; " Settable0" ] [ " NonSettable" ]
599+ AssertCtrlSpaceCompleteContains( typeDef1@ [ " A.Run(Settable = 1,)" ]) " .Run(Settable = 1," [ " Settable0" ] [ " NonSettable" ]
600+
601+ let typeDef2 =
602+ [
603+ " type A0() = member val Settable0 = 1 with get,set"
604+ " type A() ="
605+ " member val Settable = 1 with get,set"
606+ " member val NonSettable = 1"
607+ " static member Run<'T>(): A0 = Unchecked.defaultof<_>"
608+ " static member Run(a: int): A = Unchecked.defaultof<_>"
609+ ]
610+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run()" ]) " .Run(" [ " Settable" ; " Settable0" ] [ " NonSettable" ]
611+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run(S = 1)" ]) " .Run(S" [ " Settable" ; " Settable0" ] [ " NonSettable" ]
612+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run(S = 1,)" ]) " .Run(S = 1," [ " Settable" ; " Settable0" ] [ " NonSettable" ]
613+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run(Settable = 1,)" ]) " .Run(Settable = 1," [ " Settable0" ] [ " NonSettable" ]
614+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>()" ]) " .Run<_>(" [ " Settable" ; " Settable0" ] [ " NonSettable" ]
615+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>(S = 1)" ]) " .Run<_>(S" [ " Settable" ; " Settable0" ] [ " NonSettable" ]
616+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>(S = 1,)" ]) " .Run<_>(S = 1," [ " Settable" ; " Settable0" ] [ " NonSettable" ]
617+ AssertCtrlSpaceCompleteContains( typeDef2@ [ " A.Run<_>(Settable = 1,)" ]) " .Run<_>(Settable = 1," [ " Settable0" ] [ " NonSettable" ]
618+
560619
561620[<Test>]
562621[<Category( " RangeOperator" ) >]