9696// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TYPECHECKED_OVERLOADED | %FileCheck %s -check-prefix=TYPECHECKED_OVERLOADED
9797// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TYPECHECKED_TYPEEXPR | %FileCheck %s -check-prefix=TYPECHECKED_TYPEEXPR
9898
99+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_INOUT | %FileCheck %s -check-prefix=ARG_PARAMFLAG_INOUT
100+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_AUTOCLOSURE| %FileCheck %s -check-prefix=ARG_PARAMFLAG_AUTOCLOSURE
101+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_IUO | %FileCheck %s -check-prefix=ARG_PARAMFLAG_IUO
102+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_VARIADIC | %FileCheck %s -check-prefix=ARG_PARAMFLAG_VARIADIC
103+
104+
99105var i1 = 1
100106var i2 = 2
101107var oi1 : Int ?
@@ -171,18 +177,18 @@ class C1 {
171177}
172178
173179// ARG-NAME1: Begin completions, 2 items
174- // ARG-NAME1-DAG: Pattern/ExprSpecific: {#b1: Int?#}[#Argument #];
175- // ARG-NAME1-DAG: Pattern/ExprSpecific: {#b2: Int?#}[#Argument #];
180+ // ARG-NAME1-DAG: Pattern/ExprSpecific: {#b1: Int?#}[#Int? #];
181+ // ARG-NAME1-DAG: Pattern/ExprSpecific: {#b2: Int?#}[#Int? #];
176182
177183// ARG-NAME2: Begin completions, 1 items
178- // ARG-NAME2-DAG: Pattern/ExprSpecific: {#b: Int#}[#Argument #];
184+ // ARG-NAME2-DAG: Pattern/ExprSpecific: {#b: Int#}[#Int #];
179185
180186// ARG-NAME3: Begin completions, 1 items
181- // ARG-NAME3-DAG: Pattern/ExprSpecific: {#b: String?#}[#Argument #];
187+ // ARG-NAME3-DAG: Pattern/ExprSpecific: {#b: String?#}[#String? #];
182188
183189// ARG-NAME4: Begin completions, 2 items
184- // ARG-NAME4-DAG: Pattern/ExprSpecific: {#b1: String#}[#Argument #];
185- // ARG-NAME4-DAG: Pattern/ExprSpecific: {#b2: String#}[#Argument #];
190+ // ARG-NAME4-DAG: Pattern/ExprSpecific: {#b1: String#}[#String #];
191+ // ARG-NAME4-DAG: Pattern/ExprSpecific: {#b2: String#}[#String #];
186192// ARG-NAME4: End completions
187193
188194// EXPECT_OINT: Begin completions
@@ -344,7 +350,7 @@ extension C3 {
344350// HASERROR2: End completions
345351
346352// HASERROR3: Begin completions
347- // HASERROR3-DAG: Pattern/ExprSpecific: {#b1: <<error type>>#}[#Argument #];
353+ // HASERROR3-DAG: Pattern/ExprSpecific: {#b1: <<error type>>#}[#<<error type>> #];
348354// HASERROR3: End completions
349355
350356// HASERROR4: Begin completions
@@ -472,7 +478,7 @@ func testArg2Name1() {
472478func testArg2Name3( ) {
473479 firstArg( #^FIRST_ARG_NAME_3 ^#,
474480}
475- // FIRST_ARG_NAME_3: Pattern/ExprSpecific: {#arg1: Int#}[#Argument #];
481+ // FIRST_ARG_NAME_3: Pattern/ExprSpecific: {#arg1: Int#}[#Int #];
476482// FIRST_ARG_NAME_4: Decl[FreeFunction]/CurrModule: ['(']{#arg1: Int#}, {#arg2: Int#}[')'][#Void#];
477483
478484func takeArray< T> ( _ x: [ T ] ) { }
@@ -590,7 +596,7 @@ func testSubscript(obj: HasSubscript, intValue: Int, strValue: String) {
590596
591597 let _ = obj[ 42 , #^SUBSCRIPT_2 ^#
592598// SUBSCRIPT_2: Begin completions, 1 items
593- // SUBSCRIPT_2-NEXT: Pattern/ExprSpecific: {#default: String#}[#Argument #];
599+ // SUBSCRIPT_2-NEXT: Pattern/ExprSpecific: {#default: String#}[#String #];
594600
595601 let _ = obj[ 42 , . #^SUBSCRIPT_2 _DOT^#
596602// SUBSCRIPT_2_DOT-NOT: Begin completions
@@ -667,16 +673,16 @@ func testStaticMemberCall() {
667673
668674 let _ = TestStaticMemberCall . create2 ( 1 , #^STATIC_METHOD_SECOND^#)
669675// STATIC_METHOD_SECOND: Begin completions, 3 items
670- // STATIC_METHOD_SECOND: Pattern/ExprSpecific: {#arg2: Int#}[#Argument #];
671- // STATIC_METHOD_SECOND: Pattern/ExprSpecific: {#arg3: Int#}[#Argument #];
672- // STATIC_METHOD_SECOND: Pattern/ExprSpecific: {#arg4: Int#}[#Argument #];
676+ // STATIC_METHOD_SECOND: Pattern/ExprSpecific: {#arg2: Int#}[#Int #];
677+ // STATIC_METHOD_SECOND: Pattern/ExprSpecific: {#arg3: Int#}[#Int #];
678+ // STATIC_METHOD_SECOND: Pattern/ExprSpecific: {#arg4: Int#}[#Int #];
673679// STATIC_METHOD_SECOND: End completions
674680
675681 let _ = TestStaticMemberCall . create2 ( 1 , arg3: 2 , #^STATIC_METHOD_SKIPPED^#)
676682// STATIC_METHOD_SKIPPED: Begin completions, 2 items
677683// FIXME: 'arg3' shouldn't be suggested.
678- // STATIC_METHOD_SKIPPED: Pattern/ExprSpecific: {#arg3: Int#}[#Argument #];
679- // STATIC_METHOD_SKIPPED: Pattern/ExprSpecific: {#arg4: Int#}[#Argument #];
684+ // STATIC_METHOD_SKIPPED: Pattern/ExprSpecific: {#arg3: Int#}[#Int #];
685+ // STATIC_METHOD_SKIPPED: Pattern/ExprSpecific: {#arg4: Int#}[#Int #];
680686// STATIC_METHOD_SKIPPED: End completions
681687}
682688func testImplicitMember( ) {
@@ -695,16 +701,16 @@ func testImplicitMember() {
695701
696702 let _: TestStaticMemberCall = . create2( 1 , #^IMPLICIT_MEMBER_SECOND^#)
697703// IMPLICIT_MEMBER_SECOND: Begin completions, 3 items
698- // IMPLICIT_MEMBER_SECOND: Pattern/ExprSpecific: {#arg2: Int#}[#Argument #];
699- // IMPLICIT_MEMBER_SECOND: Pattern/ExprSpecific: {#arg3: Int#}[#Argument #];
700- // IMPLICIT_MEMBER_SECOND: Pattern/ExprSpecific: {#arg4: Int#}[#Argument #];
704+ // IMPLICIT_MEMBER_SECOND: Pattern/ExprSpecific: {#arg2: Int#}[#Int #];
705+ // IMPLICIT_MEMBER_SECOND: Pattern/ExprSpecific: {#arg3: Int#}[#Int #];
706+ // IMPLICIT_MEMBER_SECOND: Pattern/ExprSpecific: {#arg4: Int#}[#Int #];
701707// IMPLICIT_MEMBER_SECOND: End completions
702708
703709 let _: TestStaticMemberCall = . create2( 1 , arg3: 2 , #^IMPLICIT_MEMBER_SKIPPED^#)
704710// IMPLICIT_MEMBER_SKIPPED: Begin completions, 2 items
705711// FIXME: 'arg3' shouldn't be suggested.
706- // IMPLICIT_MEMBER_SKIPPED: Pattern/ExprSpecific: {#arg3: Int#}[#Argument #];
707- // IMPLICIT_MEMBER_SKIPPED: Pattern/ExprSpecific: {#arg4: Int#}[#Argument #];
712+ // IMPLICIT_MEMBER_SKIPPED: Pattern/ExprSpecific: {#arg3: Int#}[#Int #];
713+ // IMPLICIT_MEMBER_SKIPPED: Pattern/ExprSpecific: {#arg4: Int#}[#Int #];
708714// IMPLICIT_MEMBER_SKIPPED: End completions
709715}
710716func testImplicitMemberInArrayLiteral( ) {
@@ -787,3 +793,26 @@ func testTypecheckedTypeExpr() {
787793// TYPECHECKED_TYPEEXPR: Decl[Constructor]/CurrNominal: ['(']{#arg1: String#}, {#arg2: _#}[')'][#MyType<_>#]; name=arg1: String, arg2: _
788794// TYPECHECKED_TYPEEXPR: Decl[Constructor]/CurrNominal: ['(']{#(intVal): Int#}[')'][#MyType<Int>#]; name=intVal: Int
789795// TYPECHECKED_TYPEEXPR: End completions
796+
797+ func testPamrameterFlags( _: Int, inoutArg: inout Int, autoclosureArg: @autoclosure ( ) - > Int, iuoArg: Int!, variadicArg: Int... ) {
798+ var intVal = 1
799+ testPamrameterFlags ( intVal, #^ARG_PARAMFLAG_INOUT^#)
800+ // ARG_PARAMFLAG_INOUT: Begin completions, 1 items
801+ // ARG_PARAMFLAG_INOUT-DAG: Pattern/ExprSpecific: {#inoutArg: &Int#}[#inout Int#]; name=inoutArg:
802+ // ARG_PARAMFLAG_INOUT: End completions
803+
804+ testPamrameterFlags ( intVal, inoutArg: & intVal, #^ARG_PARAMFLAG_AUTOCLOSURE^#)
805+ // ARG_PARAMFLAG_AUTOCLOSURE: Begin completions, 1 items
806+ // ARG_PARAMFLAG_AUTOCLOSURE-DAG: Pattern/ExprSpecific: {#autoclosureArg: Int#}[#Int#];
807+ // ARG_PARAMFLAG_AUTOCLOSURE: End completions
808+
809+ testPamrameterFlags ( intVal, inoutArg: & intVal, autoclosureArg: intVal, #^ARG_PARAMFLAG_IUO^#)
810+ // ARG_PARAMFLAG_IUO: Begin completions, 1 items
811+ // ARG_PARAMFLAG_IUO-DAG: Pattern/ExprSpecific: {#iuoArg: Int?#}[#Int?#];
812+ // ARG_PARAMFLAG_IUO: End completions
813+
814+ testPamrameterFlags ( intVal, inoutArg: & intVal, autoclosureArg: intVal, iuoArg: intVal, #^ARG_PARAMFLAG_VARIADIC^#)
815+ // ARG_PARAMFLAG_VARIADIC: Begin completions, 1 items
816+ // ARG_PARAMFLAG_VARIADIC-DAG: Pattern/ExprSpecific: {#variadicArg: Int...#}[#Int#];
817+ // ARG_PARAMFLAG_VARIADIC: End completions
818+ }
0 commit comments