From 00534aa02adece5a810d6852d433b612ee76c2a9 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Sat, 3 Apr 2021 09:20:45 -0700 Subject: [PATCH] Revert "[CodeCompletion] Migrate some tests to batch completion test #4" --- test/IDE/complete_call_arg.swift | 217 ++++++++++++++---- .../complete_call_pattern_heuristics.swift | 44 ---- test/IDE/complete_constructor.swift | 99 ++++++-- test/IDE/complete_enum_elements.swift | 123 ++++++++-- test/IDE/complete_from_stdlib.swift | 110 +++++++-- ...e_value_expr_call_pattern_heuristics.swift | 25 ++ test/IDE/complete_value_literals.swift | 35 ++- test/IDE/complete_where_clause.swift | 113 ++++++--- 8 files changed, 565 insertions(+), 201 deletions(-) delete mode 100644 test/IDE/complete_call_pattern_heuristics.swift create mode 100644 test/IDE/complete_value_expr_call_pattern_heuristics.swift diff --git a/test/IDE/complete_call_arg.swift b/test/IDE/complete_call_arg.swift index c4f68c68c4e02..513e96a414ae7 100644 --- a/test/IDE/complete_call_arg.swift +++ b/test/IDE/complete_call_arg.swift @@ -1,5 +1,124 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG1 | %FileCheck %s -check-prefix=EXPECT_OINT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG2 | %FileCheck %s -check-prefix=ARG-NAME1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG3 | %FileCheck %s -check-prefix=ARG-NAME2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG4 | %FileCheck %s -check-prefix=EXPECT_INT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG5 | %FileCheck %s -check-prefix=EXPECT_OSTRING +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG6 | %FileCheck %s -check-prefix=ARG-NAME3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG7 | %FileCheck %s -check-prefix=ARG-NAME4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG8 | %FileCheck %s -check-prefix=EXPECT_STRING + +// RUN-FIXME: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD1 | %FileCheck %s -check-prefix=OVERLOAD1 +// RUN-FIXME: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD2 | %FileCheck %s -check-prefix=OVERLOAD2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD3 | %FileCheck %s -check-prefix=OVERLOAD3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD4 | %FileCheck %s -check-prefix=OVERLOAD4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD5 | %FileCheck %s -check-prefix=OVERLOAD5 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD6 | %FileCheck %s -check-prefix=OVERLOAD6 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OVERLOAD7 | %FileCheck %s -check-prefix=OVERLOAD6 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HASERROR1 | %FileCheck %s -check-prefix=HASERROR1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HASERROR2 | %FileCheck %s -check-prefix=HASERROR2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HASERROR3 | %FileCheck %s -check-prefix=HASERROR3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HASERROR4 | %FileCheck %s -check-prefix=HASERROR4 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER1 | %FileCheck %s -check-prefix=MEMBER1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER2 | %FileCheck %s -check-prefix=MEMBER2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER3 | %FileCheck %s -check-prefix=MEMBER3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER4 | %FileCheck %s -check-prefix=MEMBER4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER5 | %FileCheck %s -check-prefix=MEMBER2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER6 | %FileCheck %s -check-prefix=MEMBER4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER7 | %FileCheck %s -check-prefix=MEMBER7 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER8 | %FileCheck %s -check-prefix=MEMBER8 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MEMBER9 | %FileCheck %s -check-prefix=MEMBER1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG1 | %FileCheck %s -check-prefix=EXPECT_INT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG2 | %FileCheck %s -check-prefix=EXPECT_STRING +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG3 | %FileCheck %s -check-prefix=MEMBER2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG4 | %FileCheck %s -check-prefix=MEMBER4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG5 | %FileCheck %s -check-prefix=MEMBER2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG6 | %FileCheck %s -check-prefix=FARG6 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FARG7 | %FileCheck %s -check-prefix=EXPECT_OINT + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FIRST_ARG_NAME_1 | %FileCheck %s -check-prefix=FIRST_ARG_NAME_PATTERN +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FIRST_ARG_NAME_2 | %FileCheck %s -check-prefix=FIRST_ARG_NAME_PATTERN +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FIRST_ARG_NAME_3 -code-complete-call-pattern-heuristics | %FileCheck %s -check-prefix=FIRST_ARG_NAME_3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FIRST_ARG_NAME_3 | %FileCheck %s -check-prefix=FIRST_ARG_NAME_4 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=BOUND_GENERIC_1_1 | %FileCheck %s -check-prefix=BOUND_GENERIC_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=BOUND_GENERIC_1_2 | %FileCheck %s -check-prefix=BOUND_GENERIC_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EMPTY_OVERLOAD_1 | %FileCheck %s -check-prefix=EMPTY_OVERLOAD +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EMPTY_OVERLOAD_2 | %FileCheck %s -check-prefix=EMPTY_OVERLOAD + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CALLARG_IUO | %FileCheck %s -check-prefix=CALLARG_IUO +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=BOUND_IUO | %FileCheck %s -check-prefix=MEMBEROF_IUO +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FORCED_IUO | %FileCheck %s -check-prefix=MEMBEROF_IUO + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GENERIC_TO_GENERIC | %FileCheck %s -check-prefix=GENERIC_TO_GENERIC +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NESTED_CLOSURE | %FileCheck %s -check-prefix=NESTED_CLOSURE + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SHUFFLE_1 | %FileCheck %s -check-prefix=SHUFFLE_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SHUFFLE_2 | %FileCheck %s -check-prefix=SHUFFLE_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SHUFFLE_3 | %FileCheck %s -check-prefix=SHUFFLE_3 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_1 | %FileCheck %s -check-prefix=SUBSCRIPT_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_1_DOT | %FileCheck %s -check-prefix=SUBSCRIPT_1_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_2 | %FileCheck %s -check-prefix=SUBSCRIPT_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_2_DOT | %FileCheck %s -check-prefix=SUBSCRIPT_2_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_3 | %FileCheck %s -check-prefix=SUBSCRIPT_3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_3_DOT | %FileCheck %s -check-prefix=SUBSCRIPT_3_DOT + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ERRORCONTEXT_NESTED_1 | %FileCheck %s -check-prefix=ERRORCONTEXT_NESTED_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ERRORCONTEXT_NESTED_2 | %FileCheck %s -check-prefix=ERRORCONTEXT_NESTED_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CURRIED_SELF_1 | %FileCheck %s -check-prefix=CURRIED_SELF_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CURRIED_SELF_2 | %FileCheck %s -check-prefix=CURRIED_SELF_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CURRIED_SELF_3 | %FileCheck %s -check-prefix=CURRIED_SELF_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STATIC_METHOD_AFTERPAREN_1 | %FileCheck %s -check-prefix=STATIC_METHOD_AFTERPAREN_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STATIC_METHOD_AFTERPAREN_2 | %FileCheck %s -check-prefix=STATIC_METHOD_AFTERPAREN_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STATIC_METHOD_SECOND | %FileCheck %s -check-prefix=STATIC_METHOD_SECOND +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STATIC_METHOD_SKIPPED | %FileCheck %s -check-prefix=STATIC_METHOD_SKIPPED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STATIC_METHOD_OVERLOADED | %FileCheck %s -check-prefix=STATIC_METHOD_OVERLOADED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_AFTERPAREN_1 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_AFTERPAREN_2 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_AFTERPAREN_3 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_SECOND | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_SECOND +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_SKIPPED | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_SKIPPED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_OVERLOADED | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_OVERLOADED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_1_AFTERPAREN_1 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_1_AFTERPAREN_2 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_1_SECOND | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_SECOND +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_1_SKIPPED | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_SKIPPED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_2_AFTERPAREN_1 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_2_AFTERPAREN_2 | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_AFTERPAREN_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_2_SECOND | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_SECOND +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_2_SKIPPED | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_SKIPPED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_MEMBER_ARRAY_2_OVERLOADED | %FileCheck %s -check-prefix=IMPLICIT_MEMBER_OVERLOADED + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARCHETYPE_GENERIC_1 | %FileCheck %s -check-prefix=ARCHETYPE_GENERIC_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PARAM_WITH_ERROR_AUTOCLOSURE| %FileCheck %s -check-prefix=PARAM_WITH_ERROR_AUTOCLOSURE +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TYPECHECKED_OVERLOADED | %FileCheck %s -check-prefix=TYPECHECKED_OVERLOADED +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TYPECHECKED_TYPEEXPR | %FileCheck %s -check-prefix=TYPECHECKED_TYPEEXPR + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_INOUT | %FileCheck %s -check-prefix=ARG_PARAMFLAG_INOUT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_AUTOCLOSURE| %FileCheck %s -check-prefix=ARG_PARAMFLAG_AUTOCLOSURE +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_IUO | %FileCheck %s -check-prefix=ARG_PARAMFLAG_IUO +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ARG_PARAMFLAG_VARIADIC | %FileCheck %s -check-prefix=ARG_PARAMFLAG_VARIADIC + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TUPLEELEM_1 | %FileCheck %s -check-prefix=TUPLEELEM_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TUPLEELEM_2 | %FileCheck %s -check-prefix=TUPLEELEM_2 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=KEYPATH_THUNK_BASE | %FileCheck %s -check-prefix=KEYPATH_THUNK_BASE + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=VARIADIC_1 | %FileCheck %s -check-prefix=VARIADIC_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=VARIADIC_2 | %FileCheck %s -check-prefix=VARIADIC_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=VARIADIC_3 | %FileCheck %s -check-prefix=VARIADIC_2 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=LABEL_IN_SELF_DOT_INIT | %FileCheck %s -check-prefix=LABEL_IN_SELF_DOT_INIT + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=MISSING_REQUIRED_PARAM | %FileCheck %s -check-prefix=MISSING_REQUIRED_PARAM + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NAMED_PARAMETER_WITH_LEADING_VARIADIC | %FileCheck %s -check-prefix=NAMED_PARAMETER_WITH_LEADING_VARIADIC var i1 = 1 var i2 = 2 @@ -50,28 +169,28 @@ enum SimpleEnum { class C1 { func f1() { - foo(3, b: #^ARG1?check=EXPECT_OINT^#) + foo(3, b: #^ARG1^#) } func f2() { - foo(3, #^ARG2?check=ARG-NAME1^#) + foo(3, #^ARG2^#) } func f3() { - foo1(2, #^ARG3?check=ARG-NAME2^# + foo1(2, #^ARG3^# } func f4() { - foo1(2, b : #^ARG4?check=EXPECT_INT^# + foo1(2, b : #^ARG4^# } func f5() { - foo(#^FARG1?check=EXPECT_INT^#, b1 : 2) + foo(#^FARG1^#, b1 : 2) } func f6() { - bar(#^FARG2?check=EXPECT_STRING^# + bar(#^FARG2^# } func f7() { - foo3(#^FARG7?check=EXPECT_OINT^#) + foo3(#^FARG7^#) } } @@ -116,16 +235,16 @@ class C1 { class C2 { func f1() { - bar("", b: #^ARG5?check=EXPECT_OSTRING^#) + bar("", b: #^ARG5^#) } func f2() { - bar("", #^ARG6?check=ARG-NAME3^#) + bar("", #^ARG6^#) } func f3() { - bar1("", #^ARG7?check=ARG-NAME4^# + bar1("", #^ARG7^# } func f4() { - bar1("", b : #^ARG8?check=EXPECT_STRING^# + bar1("", b : #^ARG8^# } } @@ -160,10 +279,10 @@ class C3 { var C1I = C1() var C2I = C2() func f1() { - foo2(C1I, #^OVERLOAD1?xfail=FIXME^#) + foo2(C1I, #^OVERLOAD1^#) } func f2() { - foo2(C2I, #^OVERLOAD2?xfail=FIXME^#) + foo2(C2I, #^OVERLOAD2^#) } func f3() { foo2(C1I, b1: #^OVERLOAD3^#) @@ -182,7 +301,7 @@ class C3 { func f6(obj: C3) { overloaded(#^OVERLOAD6^# func sync() {} - obj.overloaded(#^OVERLOAD7?check=OVERLOAD6^# + obj.overloaded(#^OVERLOAD7^# } } @@ -275,11 +394,11 @@ class C4 { } func f5(_ G1 : Gen, G2 : Gen) { - G1.IntTaker(1, i1 : G2.#^MEMBER5?check=MEMBER2^# + G1.IntTaker(1, i1 : G2.#^MEMBER5^# } func f6(_ G1 : Gen, G2 : Gen) { - G1.StringTaker("", s2: G2.#^MEMBER6?check=MEMBER4^# + G1.StringTaker("", s2: G2.#^MEMBER6^# } func f7(_ GA : [Gen]) { @@ -291,19 +410,19 @@ class C4 { } func f9() { - foo(1, b1 : GenGenerator(1).#^MEMBER9?check=MEMBER1^# + foo(1, b1 : GenGenerator(1).#^MEMBER9^# } func f10(_ G: Gen) { - foo(G.#^FARG3?check=MEMBER2^# + foo(G.#^FARG3^# } func f11(_ G: Gen) { - bar(G.#^FARG4?check=MEMBER4^# + bar(G.#^FARG4^# } func f12(_ G1 : Gen, G2 : Gen) { - G1.IntTaker(G2.#^FARG5?check=MEMBER2^# + G1.IntTaker(G2.#^FARG5^# } func f13(_ G : Gen) { @@ -367,26 +486,28 @@ class C4 { func firstArg(arg1 arg1: Int, arg2: Int) {} func testArg1Name1() { - firstArg(#^FIRST_ARG_NAME_1?check=FIRST_ARG_NAME_PATTERN^# + firstArg(#^FIRST_ARG_NAME_1^# } -// FIRST_ARG_NAME_PATTERN: Decl[FreeFunction]/CurrModule: ['(']{#arg1: Int#}, {#arg2: Int#}[')'][#Void#]; +// FIRST_ARG_NAME_PATTERN: ['(']{#arg1: Int#}, {#arg2: Int#}[')'] func testArg2Name1() { - firstArg(#^FIRST_ARG_NAME_2?check=FIRST_ARG_NAME_PATTERN^#) + firstArg(#^FIRST_ARG_NAME_2^#) } func testArg2Name3() { - firstArg(#^FIRST_ARG_NAME_3?check=FIRST_ARG_NAME_PATTERN^#, + firstArg(#^FIRST_ARG_NAME_3^#, } +// FIRST_ARG_NAME_3: Pattern/ExprSpecific: {#arg1: Int#}[#Int#]; +// FIRST_ARG_NAME_4: Decl[FreeFunction]/CurrModule: ['(']{#arg1: Int#}, {#arg2: Int#}[')'][#Void#]; func takeArray(_ x: [T]) {} struct TestBoundGeneric1 { let x: [Int] let y: [Int] func test1() { - takeArray(self.#^BOUND_GENERIC_1_1?check=BOUND_GENERIC_1^#) + takeArray(self.#^BOUND_GENERIC_1_1^#) } func test2() { - takeArray(#^BOUND_GENERIC_1_2?check=BOUND_GENERIC_1^#) + takeArray(#^BOUND_GENERIC_1_2^#) } // BOUND_GENERIC_1: Decl[InstanceVar]/CurrNominal/TypeRelation[Convertible]: x[#[Int]#]; // BOUND_GENERIC_1: Decl[InstanceVar]/CurrNominal/TypeRelation[Convertible]: y[#[Int]#]; @@ -402,12 +523,12 @@ func whereConvertible(lhs: T, rhs: T) where T: Collection { func emptyOverload() {} func emptyOverload(foo foo: Int) {} -emptyOverload(foo: #^EMPTY_OVERLOAD_1?check=EMPTY_OVERLOAD^#) +emptyOverload(foo: #^EMPTY_OVERLOAD_1^#) struct EmptyOverload { init() {} init(foo: Int) {} } -_ = EmptyOverload(foo: #^EMPTY_OVERLOAD_2?check=EMPTY_OVERLOAD^#) +_ = EmptyOverload(foo: #^EMPTY_OVERLOAD_2^#) // EMPTY_OVERLOAD: Begin completions // EMPTY_OVERLOAD-DAG: Decl[GlobalVar]/Local/TypeRelation[Identical]: i2[#Int#]; // EMPTY_OVERLOAD-DAG: Decl[GlobalVar]/Local/TypeRelation[Identical]: i1[#Int#]; @@ -426,8 +547,8 @@ class Bar { var collectionView: Foo! func foo() { - self.collectionView? .#^BOUND_IUO?check=MEMBEROF_IUO^#x - self.collectionView! .#^FORCED_IUO?check=MEMBEROF_IUO^#x + self.collectionView? .#^BOUND_IUO^#x + self.collectionView! .#^FORCED_IUO^#x } // MEMBEROF_IUO: Begin completions, 2 items // MEMBEROF_IUO: Keyword[self]/CurrNominal: self[#Foo#]; name=self @@ -449,8 +570,8 @@ func trailingClosureLocal(x: Int, fn: (Int) -> Void) { if #^TRAILING_CLOSURE_LOCAL^# } // TRAILING_CLOSURE_LOCAL: Begin completions - // TRAILING_CLOSURE_LOCAL-DAG: Decl[LocalVar]/Local: localArg[#Int#]; name=localArg - // TRAILING_CLOSURE_LOCAL-DAG: Decl[LocalVar]/Local: localVar[#Int#]; name=localVar + // TRAILING_CLOSURE_LOCAL: Decl[LocalVar]/Local: localArg[#Int#]; name=localArg + // TRAILING_CLOSURE_LOCAL: Decl[LocalVar]/Local: localVar[#Int#]; name=localVar } func shuffled(_ x: Int ..., y: String = "", z: SimpleEnum = .foo) {} @@ -529,7 +650,7 @@ func testNestedContext() { // ERRORCONTEXT_NESTED_1-DAG: Decl[GlobalVar]/CurrModule: i2[#Int#]; name=i2 // ERRORCONTEXT_NESTED_1-NOT: TypeRelation[Identical] - for _ in [bar(#^ERRORCONTEXT_NESTED_2?check=ERRORCONTEXT_NESTED_1^#)] {} + for _ in [bar(#^ERRORCONTEXT_NESTED_2^#)] {} // Same as ERRORCONTEXT_NESTED_1. } @@ -540,9 +661,9 @@ class TestImplicitlyCurriedSelf { static func test() { foo(#^CURRIED_SELF_1^# func sync(); - self.foo(#^CURRIED_SELF_2?check=CURRIED_SELF_1^# + self.foo(#^CURRIED_SELF_2^# func sync(); - TestImplicitlyCurriedSelf.foo(#^CURRIED_SELF_3?check=CURRIED_SELF_1^# + TestImplicitlyCurriedSelf.foo(#^CURRIED_SELF_3^# // CURRIED_SELF_1: Begin completions, 2 items // CURRIED_SELF_1-DAG: Decl[InstanceMethod]/CurrNominal: ['(']{#(self): TestImplicitlyCurriedSelf#}[')'][#(Int) -> ()#]{{; name=.+$}} @@ -638,39 +759,39 @@ func testImplicitMemberInArrayLiteral() { Receiver([ .create1(x: 1), - .create1(#^IMPLICIT_MEMBER_ARRAY_1_AFTERPAREN_1?check=IMPLICIT_MEMBER_AFTERPAREN_1^#), + .create1(#^IMPLICIT_MEMBER_ARRAY_1_AFTERPAREN_1^#), // Same as IMPLICIT_MEMBER_AFTERPAREN_1. ]) Receiver([ .create1(x: 1), - .create2(#^IMPLICIT_MEMBER_ARRAY_1_AFTERPAREN_2?check=IMPLICIT_MEMBER_AFTERPAREN_2^#), + .create2(#^IMPLICIT_MEMBER_ARRAY_1_AFTERPAREN_2^#), // Same as IMPLICIT_MEMBER_AFTERPAREN_2. ]) Receiver([ .create1(x: 1), - .create2(1, #^IMPLICIT_MEMBER_ARRAY_1_SECOND?check=IMPLICIT_MEMBER_SECOND^# + .create2(1, #^IMPLICIT_MEMBER_ARRAY_1_SECOND^# // Same as IMPLICIT_MEMBER_SECOND. ]) Receiver(arg1: 12, arg2: [ - .create2(1, arg3: 2, #^IMPLICIT_MEMBER_ARRAY_1_SKIPPED?check=IMPLICIT_MEMBER_SKIPPED^# + .create2(1, arg3: 2, #^IMPLICIT_MEMBER_ARRAY_1_SKIPPED^# // Same as IMPLICIT_MEMBER_SKIPPED. .create1(x: 12) ]) Receiver(arg1: 12, arg2: [ .create1(x: 12), - .createOverloaded(#^IMPLICIT_MEMBER_ARRAY_1_OVERLOADED?check=IMPLICIT_MEMBER_OVERLOADED^#) + .createOverloaded(#^IMPLICIT_MEMBER_ARRAY_1_OVERLOADED^#) // Same as IMPLICIT_MEMBER_OVERLOADED. ]) let _: [TestStaticMemberCall] = [ - .create1(#^IMPLICIT_MEMBER_ARRAY_2_AFTERPAREN_1?check=IMPLICIT_MEMBER_AFTERPAREN_1^#), + .create1(#^IMPLICIT_MEMBER_ARRAY_2_AFTERPAREN_1^#), // Same as IMPLICIT_MEMBER_AFTERPAREN_1. - .create2(#^IMPLICIT_MEMBER_ARRAY_2_AFTERPAREN_2?check=IMPLICIT_MEMBER_AFTERPAREN_2^#), + .create2(#^IMPLICIT_MEMBER_ARRAY_2_AFTERPAREN_2^#), // Same as IMPLICIT_MEMBER_AFTERPAREN_2. - .create2(1, #^IMPLICIT_MEMBER_ARRAY_2_SECOND?check=IMPLICIT_MEMBER_SECOND^#), + .create2(1, #^IMPLICIT_MEMBER_ARRAY_2_SECOND^#), // Same as IMPLICIT_MEMBER_SECOND. - .create2(1, arg3: 2, #^IMPLICIT_MEMBER_ARRAY_2_SKIPPED?check=IMPLICIT_MEMBER_SKIPPED^#), + .create2(1, arg3: 2, #^IMPLICIT_MEMBER_ARRAY_2_SKIPPED^#), // Same as IMPLICIT_MEMBER_SKIPPED. - .createOverloaded(#^IMPLICIT_MEMBER_ARRAY_2_OVERLOADED?check=IMPLICIT_MEMBER_OVERLOADED^#), + .createOverloaded(#^IMPLICIT_MEMBER_ARRAY_2_OVERLOADED^#), // Same as IMPLICIT_MEMBER_OVERLOADED ] } @@ -787,7 +908,7 @@ func testVariadic(_ arg: Any..., option1: Int = 0, option2: String = 1) { // VARIADIC_2-DAG: Pattern/ExprSpecific: {#option2: String#}[#String#]; // VARIADIC_2-DAG: Decl[GlobalVar]/CurrModule: i1[#Int#]; // VARIADIC_2: End completions - testVariadic(1, 2, #^VARIADIC_3?check=VARIADIC_2^#) + testVariadic(1, 2, #^VARIADIC_3^#) // Same as VARIADIC_2. } diff --git a/test/IDE/complete_call_pattern_heuristics.swift b/test/IDE/complete_call_pattern_heuristics.swift deleted file mode 100644 index 7b1958646a413..0000000000000 --- a/test/IDE/complete_call_pattern_heuristics.swift +++ /dev/null @@ -1,44 +0,0 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t -code-complete-call-pattern-heuristics - -struct FooStruct { - init() {} - init(a: Int) {} - init(a: Int, b: Float) {} - mutating func instanceFunc2(_ a: Int, b: inout Double) {} -} - -func testInsideFunctionCall_1(_ x: inout FooStruct) { - x.instanceFunc(#^BEFORE_COMMA^#, -// BEFORE_COMMA: Begin completions -// BEFORE_COMMA-NOT: Pattern/{{.*}}:{{.*}}({{.*}}{#Int#} -// BOFORE_COMMA-NOT: Decl[InstanceMethod]/{{.*}}:{{.*}}({{.*}}{#Int#} -// BEFORE_COMMA: End completions -} -func testInsideFunctionCall_2(_ x: inout FooStruct) { - x.instanceFunc(#^BEFORE_PLACEHOLDER^#<#placeholder#> -// BEFORE_PLACEHOLDER: Begin completions -// BEFORE_PLACEHOLDER-NOT: Pattern/{{.*}}:{{.*}}({{.*}}{#Int#} -// BOFORE_PLACEHOLDER-NOT: Decl[InstanceMethod]/{{.*}}:{{.*}}({{.*}}{#Int#} -// BEFORE_PLACEHOLDER: End completions -} -func testConstructor() { - FooStruct(#^CONSTRUCTOR^#, -// CONSTRUCTOR: Begin completions -// CONSTRUCTOR-NOT: Pattern/{{.*}} -// CONSTRUCTOR-NOT: Decl[Constructor] -// CONSTRUCTOR: Pattern/ExprSpecific: {#a: Int#}[#Int#] -// CONSTRUCTOR-NOT: Pattern/{{.*}} -// CONSTRUCTOR-NOT: Decl[Constructor] -// CONSTRUCTOR: End completions -} - -func firstArg(arg1 arg1: Int, arg2: Int) {} -func testArg2Name3() { - firstArg(#^LABELED_FIRSTARG^#, -// LABELED_FIRSTARG: Begin completions -// LABELED_FIRSTARG-NOT: ['(']{#arg1: Int#}, {#arg2: Int#}[')'][#Void#]; -// LABELED_FIRSTARG-DAG: Pattern/ExprSpecific: {#arg1: Int#}[#Int#]; -// LABELED_FIRSTARG-NOT: ['(']{#arg1: Int#}, {#arg2: Int#}[')'][#Void#]; -// LABELED_FIRSTARG: End completions - diff --git a/test/IDE/complete_constructor.swift b/test/IDE/complete_constructor.swift index 59f85263bf690..6d75f7b6afcc9 100644 --- a/test/IDE/complete_constructor.swift +++ b/test/IDE/complete_constructor.swift @@ -1,5 +1,58 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_CONSTRUCTORS_1 | %FileCheck %s -check-prefix=IMPLICIT_CONSTRUCTORS_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_CONSTRUCTORS_1P | %FileCheck %s -check-prefix=IMPLICIT_CONSTRUCTORS_1P +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_CONSTRUCTORS_2 | %FileCheck %s -check-prefix=IMPLICIT_CONSTRUCTORS_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IMPLICIT_CONSTRUCTORS_2P | %FileCheck %s -check-prefix=IMPLICIT_CONSTRUCTORS_2P + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_1 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_1P | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_1P + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_2 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_2P | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_2P + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_3P | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_3P + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_SELECTOR_1 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_SELECTOR_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_VAL_META_1 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_VAL_META_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_VAL_META_2 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_VAL_META_2 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPLICIT_CONSTRUCTORS_BASE_DERIVED_1 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_BASE_DERIVED_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=DEFAULT_INIT_FROM_PROT_NODOT | %FileCheck %s -check-prefix=DEFAULT_INIT_FROM_PROT + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=DEFAULT_INIT_FROM_PROT_DOT | %FileCheck %s -check-prefix=DEFAULT_INIT_FROM_PROT + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=DEFAULT_INIT_FROM_PROT_PAREN | %FileCheck %s -check-prefix=DEFAULT_INIT_FROM_PROT + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE1 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE2_1 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE2_NOINIT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE2_2 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE2_NOINIT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE2_3 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE2_NOINIT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE2_4 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE2_SHOW_INIT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE2_5 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE2_SHOW_INIT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE2_6 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE2_NOINIT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE3 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE3 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE4 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE5 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE4 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_FROM_METATYPE6 | %FileCheck %s -check-prefix=INIT_FROM_METATYPE6 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HAVE_RPAREN_1 | %FileCheck %s -check-prefix=HAVE_RPAREN_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HAVE_RPAREN_2 | %FileCheck %s -check-prefix=HAVE_RPAREN_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HAVE_COMMA_1 -code-complete-call-pattern-heuristics | %FileCheck %s -check-prefix=HAVE_COMMA_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HAVE_COMMA_1 | %FileCheck %s -check-prefix=EXPLICIT_CONSTRUCTORS_1P +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=WITH_ALIAS_1 | %FileCheck %s -check-prefix=WITH_ALIAS_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLOSURE_IN_INIT_1 | %FileCheck %s -check-prefix=CLOSURE_IN_INIT_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLOSURE_IN_INIT_2 | %FileCheck %s -check-prefix=CLOSURE_IN_INIT_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLOSURE_IN_INIT_3 | %FileCheck %s -check-prefix=CLOSURE_IN_INIT_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLOSURE_IN_INIT_4 | %FileCheck %s -check-prefix=CLOSURE_IN_INIT_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=AVAILABLE_1 | %FileCheck %s -check-prefix=AVAILABLE_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=AVAILABLE_2 | %FileCheck %s -check-prefix=AVAILABLE_1 + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=DEPENDENT_IN_CLOSURE_1 | %FileCheck %s -check-prefix=DEPENDENT_IN_CLOSURE_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=DEPENDENT_IN_CLOSURE_2 | %FileCheck %s -check-prefix=DEPENDENT_IN_CLOSURE_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_WITH_UNRESOLVEDTYPE_1 | %FileCheck %s -check-prefix=INIT_WITH_UNRESOLVEDTYPE_1 func freeFunc() {} @@ -143,9 +196,9 @@ func testExplicitConstructorsSelector2() { ExplicitConstructorsSelector2#^EXPLICIT_CONSTRUCTORS_SELECTOR_2^# // EXPLICIT_CONSTRUCTORS_SELECTOR_2: Begin completions, 6 items // EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#noArgs: ()#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} -// EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#(a): Int#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} -// EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#(a): Int#}, {#withFloat: Float#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} -// EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#int: Int#}, {#(b): Float#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} +// EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#Int#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} +// EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#Int#}, {#withFloat: Float#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} +// EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Decl[Constructor]/CurrNominal: ({#int: Int#}, {#Float#})[#ExplicitConstructorsSelector2#]{{; name=.+$}} // EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Keyword[self]/CurrNominal: .self[#ExplicitConstructorsSelector2.Type#]; name=self // EXPLICIT_CONSTRUCTORS_SELECTOR_2-DAG: Keyword/CurrNominal: .Type[#ExplicitConstructorsSelector2.Type#]; name=Type // EXPLICIT_CONSTRUCTORS_SELECTOR_2: End completions @@ -165,7 +218,7 @@ class ExplicitConstructorsDerived2 : ExplicitConstructorsBase1 { init() {} required init(a : Int) {} class func foo() { - self.#^INIT_FROM_METATYPE5?check=INIT_FROM_METATYPE4^# + self.#^INIT_FROM_METATYPE5^# } } @@ -193,12 +246,12 @@ func testGetInitFromMetatype1() { func testGetInitFromMetatype2() { var S1 = ExplicitConstructorsBase1.self var S2 = ExplicitConstructorsDerived2.self - S1.#^INIT_FROM_METATYPE2_1?check=INIT_FROM_METATYPE2_NOINIT^# - S1#^INIT_FROM_METATYPE2_2?check=INIT_FROM_METATYPE2_NOINIT^# - S1(#^INIT_FROM_METATYPE2_3?check=INIT_FROM_METATYPE2_NOINIT^# - S2.#^INIT_FROM_METATYPE2_4?check=INIT_FROM_METATYPE2_SHOW_INIT^# - S2#^INIT_FROM_METATYPE2_5?check=INIT_FROM_METATYPE2_SHOW_INIT^# - S2(#^INIT_FROM_METATYPE2_6?check=INIT_FROM_METATYPE2_NOINIT^# + S1.#^INIT_FROM_METATYPE2_1^# + S1#^INIT_FROM_METATYPE2_2^# + S1(#^INIT_FROM_METATYPE2_3^# + S2.#^INIT_FROM_METATYPE2_4^# + S2#^INIT_FROM_METATYPE2_5^# + S2(#^INIT_FROM_METATYPE2_6^# } // INIT_FROM_METATYPE2_NOINIT-NOT: Decl[Constructor] @@ -248,7 +301,8 @@ func testHaveRParen2() { } func testHaveComma1() { - ExplicitConstructors1(#^HAVE_COMMA_1?check=EXPLICIT_CONSTRUCTORS_1P^#, + ExplicitConstructors1(#^HAVE_COMMA_1^#, +// HAVE_COMMA_1-NOT: Decl[Constructor] } //===--- Test that we show default constuctors inherited from protocols @@ -261,9 +315,9 @@ class ConformsToProtDefaultInit: ProtDefaultInit { } func testHasDefaultInitFromProtocol() { - ConformsToProtDefaultInit#^DEFAULT_INIT_FROM_PROT_NODOT?check=DEFAULT_INIT_FROM_PROT^# - ConformsToProtDefaultInit.#^DEFAULT_INIT_FROM_PROT_DOT?check=DEFAULT_INIT_FROM_PROT^# - ConformsToProtDefaultInit(#^DEFAULT_INIT_FROM_PROT_PAREN?check=DEFAULT_INIT_FROM_PROT^# + ConformsToProtDefaultInit#^DEFAULT_INIT_FROM_PROT_NODOT^# + ConformsToProtDefaultInit.#^DEFAULT_INIT_FROM_PROT_DOT^# + ConformsToProtDefaultInit(#^DEFAULT_INIT_FROM_PROT_PAREN^# // DEFAULT_INIT_FROM_PROT-DAG: Decl[Constructor]/CurrNominal: {{.+}}{#bar: Int#} // DEFAULT_INIT_FROM_PROT-DAG: Decl[Constructor]/Super: {{.+}}{#foo: Int#} @@ -286,13 +340,13 @@ struct ClosureInInit1 { } // CLOSURE_IN_INIT_1: Decl[Constructor]/CurrNominal{{(/TypeRelation\[Identical\])?}}: ['(']{#Int#}[')'][#S#]; var prop2: S = { - return S(#^CLOSURE_IN_INIT_2?check=CLOSURE_IN_INIT_1^# + return S(#^CLOSURE_IN_INIT_2^# }() var prop3: S = { - S(#^CLOSURE_IN_INIT_3?check=CLOSURE_IN_INIT_1^# + S(#^CLOSURE_IN_INIT_3^# } var prop3: S = { - S(#^CLOSURE_IN_INIT_4?check=CLOSURE_IN_INIT_1^# + S(#^CLOSURE_IN_INIT_4^# }() } @@ -317,7 +371,7 @@ func testAvailable() { // AVAILABLE_1-DAG: Decl[Constructor]/CurrNominal: ['(']{#normal2: Int#}[')'][#AvailableTest#]; name=normal2: Int // AVAILABLE_1: End completions - let _ = AvailableTest.init(#^AVAILABLE_2?check=AVAILABLE_1^# + let _ = AvailableTest.init(#^AVAILABLE_2^# } protocol DataType { @@ -329,11 +383,6 @@ class DependentTypeInClosure { } func testDependentTypeInClosure() { let _: DependentTypeInClosure = .#^DEPENDENT_IN_CLOSURE_3^# -// DEPENDENT_IN_CLOSURE_3: Begin completions, 2 items -// DEPENDENT_IN_CLOSURE_3-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Identical]: init({#(arg): DataType#}, {#fn: (Data.Content) -> Void##(Data.Content) -> Void#})[#DependentTypeInClosure#]; -// DEPENDENT_IN_CLOSURE_3-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Identical]: init({#arg: DataType#}, {#fn: () -> Data.Content##() -> Data.Content#})[#DependentTypeInClosure#]; -// DEPENDENT_IN_CLOSURE_3: End completions - let _ = DependentTypeInClosure(#^DEPENDENT_IN_CLOSURE_1^#) // DEPENDENT_IN_CLOSURE_1: Begin completions // DEPENDENT_IN_CLOSURE_1-DAG: Decl[Constructor]/CurrNominal: ['(']{#(arg): _#}, {#fn: (_.Content) -> Void##(_.Content) -> Void#}[')'][#DependentTypeInClosure<_>#]; diff --git a/test/IDE/complete_enum_elements.swift b/test/IDE/complete_enum_elements.swift index dc90f216ccf5c..b76b92aea4e9e 100644 --- a/test/IDE/complete_enum_elements.swift +++ b/test/IDE/complete_enum_elements.swift @@ -1,5 +1,80 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_TYPE_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_2 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_TYPE_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_3 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAR_ENUM_TYPE_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_4 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAZ_ENUM_TYPE_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_5 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=QUX_ENUM_TYPE_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_6 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=QUX_ENUM_TYPE_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_WITH_DOT_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_DOT_ELEMENTS < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_WITH_DOT_2 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_DOT_ELEMENTS < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_WITH_QUAL_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_DOT_CONTEXT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_EXPR_ERROR_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_IN_PATTERN_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=WITH_GLOBAL_RESULTS < %t.enum.txt +// RUN: %FileCheck %s -check-prefix=ENUM_SW_IN_PATTERN_1 < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_SW_IN_PATTERN_2 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=ENUM_SW_IN_PATTERN_2 < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_NO_DOT_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_NO_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_NO_DOT_2 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAR_ENUM_NO_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_NO_DOT_3 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAZ_INT_ENUM_NO_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_NO_DOT_4 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAZ_T_ENUM_NO_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_NO_DOT_5 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=QUX_ENUM_NO_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_DOT_1 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=FOO_ENUM_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_DOT_2 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAR_ENUM_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_DOT_3 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAZ_INT_ENUM_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_DOT_4 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=BAZ_T_ENUM_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_QUAL_DOT_5 > %t.enum.txt +// RUN: %FileCheck %s -check-prefix=QUX_ENUM_DOT < %t.enum.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=WITH_INVALID_DOT_1 | %FileCheck %s -check-prefix=WITH_INVALID_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=UNRESOLVED_1 | %FileCheck %s -check-prefix=UNRESOLVED_1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=UNRESOLVED_2 | %FileCheck %s -check-prefix=UNRESOLVED_2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=UNRESOLVED_3 | %FileCheck %s -check-prefix=UNRESOLVED_3 //===--- //===--- Test that we can complete enum elements. @@ -236,63 +311,63 @@ func freeFunc() {} func testSwitch1(e: FooEnum) { switch e { - case #^ENUM_SW_1?check=WITH_GLOBAL_RESULTS;check=FOO_ENUM_TYPE_CONTEXT^# + case #^ENUM_SW_1^# } } func testSwitch2(e: FooEnum) { switch e { case .Foo1: - case #^ENUM_SW_2?check=WITH_GLOBAL_RESULTS;check=FOO_ENUM_TYPE_CONTEXT^# + case #^ENUM_SW_2^# } } func testSwitch3(e: BarEnum) { switch e { - case #^ENUM_SW_3?check=WITH_GLOBAL_RESULTS;check=BAR_ENUM_TYPE_CONTEXT^# + case #^ENUM_SW_3^# } } func testSwitch4(e: BazEnum) { switch e { - case #^ENUM_SW_4?check=WITH_GLOBAL_RESULTS;check=BAZ_ENUM_TYPE_CONTEXT^# + case #^ENUM_SW_4^# } } func testSwitch5(e: QuxEnum) { switch e { - case #^ENUM_SW_5?check=WITH_GLOBAL_RESULTS;check=QUX_ENUM_TYPE_CONTEXT^# + case #^ENUM_SW_5^# } } // Test for top level code switch QuxEnum.Qux1 { -case #^ENUM_SW_6?check=WITH_GLOBAL_RESULTS;check=QUX_ENUM_TYPE_CONTEXT^# +case #^ENUM_SW_6^# } func testSwitchWithDot1(e: FooEnum) { switch e { - case .#^ENUM_SW_WITH_DOT_1?check=FOO_ENUM_DOT_ELEMENTS^# + case .#^ENUM_SW_WITH_DOT_1^# } } // Test for top level code switch FooEnum.Foo2 { -case .#^ENUM_SW_WITH_DOT_2?check=FOO_ENUM_DOT_ELEMENTS^# +case .#^ENUM_SW_WITH_DOT_2^# } func testSwitchWithQualification1(e: FooEnum) { switch e { - case FooEnum.#^ENUM_SW_WITH_QUAL_1?check=FOO_ENUM_DOT_CONTEXT^# + case FooEnum.#^ENUM_SW_WITH_QUAL_1^# } } func testSwitchExprError1() { switch unknown_var { - case FooEnum.#^ENUM_SW_EXPR_ERROR_1?check=FOO_ENUM_DOT^# + case FooEnum.#^ENUM_SW_EXPR_ERROR_1^# } } // FIXME func testSwitchInPattern1(e: BazEnum) { switch e { - case .Baz2(#^ENUM_SW_IN_PATTERN_1?check=WITH_GLOBAL_RESULTS;check=ENUM_SW_IN_PATTERN_1^# + case .Baz2(#^ENUM_SW_IN_PATTERN_1^# } } // ENUM_SW_IN_PATTERN_1-NOT: .Baz1 @@ -307,35 +382,35 @@ func testSwitchInPattern2(e: BazEnum) { //===--- Complete qualified references to enum elements. func testQualifiedNoDot1() { - var e = FooEnum#^ENUM_QUAL_NO_DOT_1?check=FOO_ENUM_NO_DOT^# + var e = FooEnum#^ENUM_QUAL_NO_DOT_1^# } func testQualifiedNoDot2() { - var e = BarEnum#^ENUM_QUAL_NO_DOT_2?check=BAR_ENUM_NO_DOT^# + var e = BarEnum#^ENUM_QUAL_NO_DOT_2^# } func testQualifiedNoDot3() { - var e = BazEnum#^ENUM_QUAL_NO_DOT_3?check=BAZ_INT_ENUM_NO_DOT^# + var e = BazEnum#^ENUM_QUAL_NO_DOT_3^# } func testQualifiedNoDot4() { - var e = BazEnum#^ENUM_QUAL_NO_DOT_4?check=BAZ_T_ENUM_NO_DOT^# + var e = BazEnum#^ENUM_QUAL_NO_DOT_4^# } func testQualifiedNoDot5() { - var e = QuxEnum#^ENUM_QUAL_NO_DOT_5?check=QUX_ENUM_NO_DOT^# + var e = QuxEnum#^ENUM_QUAL_NO_DOT_5^# } func testQualifiedDot1() { - var e = FooEnum.#^ENUM_QUAL_DOT_1?check=FOO_ENUM_DOT^# + var e = FooEnum.#^ENUM_QUAL_DOT_1^# } func testQualifiedDot2() { - var e = BarEnum.#^ENUM_QUAL_DOT_2?check=BAR_ENUM_DOT^# + var e = BarEnum.#^ENUM_QUAL_DOT_2^# } func testQualifiedDot3() { - var e = BazEnum.#^ENUM_QUAL_DOT_3?check=BAZ_INT_ENUM_DOT^# + var e = BazEnum.#^ENUM_QUAL_DOT_3^# } func testQualifiedDot4() { - var e = BazEnum.#^ENUM_QUAL_DOT_4?check=BAZ_T_ENUM_DOT^# + var e = BazEnum.#^ENUM_QUAL_DOT_4^# } func testQualifiedDot5() { - var e = QuxEnum.#^ENUM_QUAL_DOT_5?check=QUX_ENUM_DOT^# + var e = QuxEnum.#^ENUM_QUAL_DOT_5^# } // ===--- Complete in the presence of invalid enum elements. @@ -349,7 +424,7 @@ enum WithInvalid { } func testWithInvalid1() { - let x = WithInvalid.#^WITH_INVALID_DOT_1?check=WITH_INVALID_DOT^# + let x = WithInvalid.#^WITH_INVALID_DOT_1^# // WITH_INVALID_DOT: Begin completions // WITH_INVALID_DOT-DAG: Decl[EnumElement]/CurrNominal: Okay[#WithInvalid#]; name=Okay diff --git a/test/IDE/complete_from_stdlib.swift b/test/IDE/complete_from_stdlib.swift index 7a7c88f69ae6e..08c175e79cda3 100644 --- a/test/IDE/complete_from_stdlib.swift +++ b/test/IDE/complete_from_stdlib.swift @@ -1,18 +1,84 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PLAIN_TOP_LEVEL_1 > %t.toplevel.txt +// RUN: %FileCheck %s -check-prefix=PLAIN_TOP_LEVEL < %t.toplevel.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.toplevel.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_1 > %t.members1.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_1 < %t.members1.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members1.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_2A > %t.members2a.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_2A < %t.members2a.txt +// RUN: %FileCheck %s -check-prefix=NEGATIVE_PRIVATE_NOMINAL_MEMBERS_2A < %t.members2a.txt +// FIXME: filter? +// RUN-disabled: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members2a.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_2B > %t.members2b.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_2B < %t.members2b.txt +// RUN: %FileCheck %s -check-prefix=NEGATIVE_PRIVATE_NOMINAL_MEMBERS_2B < %t.members2b.txt +// FIXME: filter? +// RUN-disabled: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members2b.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_3 > %t.members3.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_3 < %t.members3.txt +// RUN: %FileCheck %s -check-prefix=NEGATIVE_PRIVATE_NOMINAL_MEMBERS_3 < %t.members3.txt +// FIXME: filter? +// RUN-disabled: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members3.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_4 > %t.members4.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_4 < %t.members4.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members4.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_5 > %t.members5.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_5 < %t.members5.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members5.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_6 > %t.members6.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_6 < %t.members6.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members6.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_7 > %t.members7.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_7 < %t.members7.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members7.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_8 > %t.members8.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_8 < %t.members8.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members8.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_9 > %t.members9.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_9 < %t.members9.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members9.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE_NOMINAL_MEMBERS_10 > %t.members10.txt +// RUN: %FileCheck %s -check-prefix=PRIVATE_NOMINAL_MEMBERS_10 < %t.members10.txt +// RUN: %FileCheck %s -check-prefix=NO_STDLIB_PRIVATE < %t.members10.txt + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=POSTFIX_INT_1 | %FileCheck %s -check-prefix=POSTFIX_RVALUE_INT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=POSTFIX_INT_2 | %FileCheck %s -check-prefix=POSTFIX_LVALUE_INT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=POSTFIX_OPTIONAL_1 | %FileCheck %s -check-prefix=POSTFIX_OPTIONAL + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INFIX_INT_1 > %t +// RUN: %FileCheck %s -check-prefix=INFIX_INT < %t +// RUN: %FileCheck %s -check-prefix=NEGATIVE_INFIX_INT < %t + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INFIX_INT_2 | %FileCheck %s -check-prefix=INFIX_LVALUE_INT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INFIX_STRING_1 | %FileCheck %s -check-prefix=INFIX_STRING +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INFIX_EXT_STRING_1 | %FileCheck %s -check-prefix=INFIX_EXT_STRING + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CONFORM_SEQUENCE | %FileCheck %s -check-prefix=CONFORM_SEQUENCE + +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GENERIC_CLOSUREARG | %FileCheck %s -check-prefix=GENERIC_CLOSUREARG // NO_STDLIB_PRIVATE: Begin completions -// NO_STDLIB_PRIVATE-NOT: Decl{{[^:]*}}/IsSystem: _ // NO_STDLIB_PRIVATE: End completions -#^PLAIN_TOP_LEVEL_1?check=PLAIN_TOP_LEVEL;check=NO_STDLIB_PRIVATE^# +#^PLAIN_TOP_LEVEL_1^# // PLAIN_TOP_LEVEL: Begin completions // PLAIN_TOP_LEVEL-DAG: Decl[Struct]/OtherModule[Swift]/IsSystem: Array[#Array#]{{; name=.+$}} // PLAIN_TOP_LEVEL: End completions func privateNominalMembers(_ a: String) { - a.#^PRIVATE_NOMINAL_MEMBERS_1?check=PRIVATE_NOMINAL_MEMBERS_1;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_1^# } // PRIVATE_NOMINAL_MEMBERS_1: Begin completions @@ -23,7 +89,7 @@ func privateNominalMembers(_ a: String) { // PRIVATE_NOMINAL_MEMBERS_1: End completions func protocolExtCollection1a(_ a: C) { - a.#^PRIVATE_NOMINAL_MEMBERS_2A?check=PRIVATE_NOMINAL_MEMBERS_2A;check=NEGATIVE_PRIVATE_NOMINAL_MEMBERS_2A;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_2A^# } // PRIVATE_NOMINAL_MEMBERS_2A: Begin completions @@ -32,7 +98,7 @@ func protocolExtCollection1a(_ a: C) { // NEGATIVE_PRIVATE_NOMINAL_MEMBERS_2A-NOT: Decl{{.*}}: index({#before: Comparable#}) func protocolExtCollection1b(_ a: Collection) { - a.#^PRIVATE_NOMINAL_MEMBERS_2B?check=PRIVATE_NOMINAL_MEMBERS_2B;check=NEGATIVE_PRIVATE_NOMINAL_MEMBERS_2B;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_2B^# } // PRIVATE_NOMINAL_MEMBERS_2B: Begin completions @@ -41,7 +107,7 @@ func protocolExtCollection1b(_ a: Collection) { // NEGATIVE_PRIVATE_NOMINAL_MEMBERS_2B-NOT: Decl{{.*}}: index({#before: Comparable#}) func protocolExtCollection2(_ a: C) { - a.#^PRIVATE_NOMINAL_MEMBERS_3?check=PRIVATE_NOMINAL_MEMBERS_3;check=NEGATIVE_PRIVATE_NOMINAL_MEMBERS_3;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_3^# } // PRIVATE_NOMINAL_MEMBERS_3: Begin completions @@ -52,7 +118,7 @@ func protocolExtCollection2(_ // NEGATIVE_PRIVATE_NOMINAL_MEMBERS_3-NOT: Decl{{.*}}: firstIndex({#({{.*}}): Self.Iterator.Element func protocolExtArray(_ a: [T]) { - a.#^PRIVATE_NOMINAL_MEMBERS_4?check=PRIVATE_NOMINAL_MEMBERS_4;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_4^# } // PRIVATE_NOMINAL_MEMBERS_4: Begin completions // PRIVATE_NOMINAL_MEMBERS_4-DAG: Decl[InstanceMethod]/Super/IsSystem: map({#(transform): (Equatable) throws -> T##(Equatable) throws -> T#})[' rethrows'][#[T]#]{{; name=.+}} @@ -62,7 +128,7 @@ func protocolExtArray(_ a: [T]) { // PRIVATE_NOMINAL_MEMBERS_4: End completions func testArchetypeReplacement1(_ a: [FOO]) { - a.#^PRIVATE_NOMINAL_MEMBERS_5?check=PRIVATE_NOMINAL_MEMBERS_5;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_5^# } // PRIVATE_NOMINAL_MEMBERS_5: Begin completions @@ -77,7 +143,7 @@ func testArchetypeReplacement1(_ a: [FOO]) { func testArchetypeReplacement2(_ a: [BAR]) { - a.#^PRIVATE_NOMINAL_MEMBERS_6?check=PRIVATE_NOMINAL_MEMBERS_6;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_6^# } // PRIVATE_NOMINAL_MEMBERS_6: Begin completions @@ -94,7 +160,7 @@ func testArchetypeReplacement2(_ a: [BAR]) { // FIXME: restore Decl[InstanceMethod]/Super: flatMap({#(transform): (Equatable) throws -> Sequence##(Equatable) throws -> Sequence#})[' rethrows'][#[IteratorProtocol.Element]#]{{; name=.+}} func testArchetypeReplacement3 (_ a : [Int]) { - a.#^PRIVATE_NOMINAL_MEMBERS_7?check=PRIVATE_NOMINAL_MEMBERS_7;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_7^# } // PRIVATE_NOMINAL_MEMBERS_7: Begin completions @@ -132,13 +198,13 @@ class MyClass3 { } func testArchetypeReplacement4(_ a : MyClass1) { - a.#^PRIVATE_NOMINAL_MEMBERS_8?check=PRIVATE_NOMINAL_MEMBERS_8;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_8^# } // PRIVATE_NOMINAL_MEMBERS_8: Begin completions // PRIVATE_NOMINAL_MEMBERS_8-DAG: Decl[InstanceMethod]/Super: foo({#(x): MyInt#})[#Void#]{{; name=.+}} func testArchetypeReplacement5(_ a : MyClass2) { - a.#^PRIVATE_NOMINAL_MEMBERS_9?check=PRIVATE_NOMINAL_MEMBERS_9;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_9^# } // PRIVATE_NOMINAL_MEMBERS_9: Begin completions @@ -146,31 +212,31 @@ func testArchetypeReplacement5(_ a : MyClass2) { func testArchetypeReplacement6() { var a = MyClass3() - a.#^PRIVATE_NOMINAL_MEMBERS_10?check=PRIVATE_NOMINAL_MEMBERS_10;check=NO_STDLIB_PRIVATE^# + a.#^PRIVATE_NOMINAL_MEMBERS_10^# } // PRIVATE_NOMINAL_MEMBERS_10: Begin completions // PRIVATE_NOMINAL_MEMBERS_10-DAG: Decl[InstanceMethod]/CurrNominal: foo({#(t): P1 & P2#})[#Void#]{{; name=.+}} func testPostfixOperator1(_ x: Int) { - x#^POSTFIX_INT_1?check=POSTFIX_RVALUE_INT^# + x#^POSTFIX_INT_1^# } // POSTFIX_RVALUE_INT-NOT: ++ // POSTFIX_RVALUE_INT-NOT: -- func testPostfixOperator2(_ x: inout Int) { - x#^POSTFIX_INT_2?check=POSTFIX_LVALUE_INT^# + x#^POSTFIX_INT_2^# } // POSTFIX_LVALUE_INT-NOT: Decl[PostfixOperatorFunction]/OtherModule[Swift]/IsSystem: ++[#Int#]; name= // POSTFIX_LVALUE_INT-NOT: Decl[PostfixOperatorFunction]/OtherModule[Swift]/IsSystem: --[#Int#]; name= func testPostfixOperator3(_ x: MyInt??) { - x#^POSTFIX_OPTIONAL_1?check=POSTFIX_OPTIONAL^# + x#^POSTFIX_OPTIONAL_1^# } // POSTFIX_OPTIONAL: BuiltinOperator/None: ![#MyInt?#]; name=! func testInfixOperator1(_ x: Int) { - x#^INFIX_INT_1?check=INFIX_INT;check=NEGATIVE_INFIX_INT^# + x#^INFIX_INT_1^# } // INFIX_INT: Begin completions // INFIX_INT-DAG: Decl[InfixOperatorFunction]/OtherModule[Swift]/IsSystem: ... {#Int#}[#ClosedRange#] @@ -183,7 +249,7 @@ func testInfixOperator1(_ x: Int) { // NEGATIVE_INFIX_INT-NOT: && // NEGATIVE_INFIX_INT-NOT: += func testInfixOperator2(_ x: inout Int) { - x#^INFIX_INT_2?check=INFIX_LVALUE_INT^# + x#^INFIX_INT_2^# } // INFIX_LVALUE_INT: Begin completions // INFIX_LVALUE_INT-DAG: Decl[InfixOperatorFunction]/OtherModule[Swift]/IsSystem: ... {#Int#}[#ClosedRange#] @@ -197,7 +263,7 @@ func testInfixOperator2(_ x: inout Int) { // INFIX_LVALUE_INT: End completions func testInfixOperator3(_ x: String) { - x#^INFIX_STRING_1?check=INFIX_STRING^# + x#^INFIX_STRING_1^# } // INFIX_STRING: Begin completions // INFIX_STRING-DAG: Decl[InfixOperatorFunction]/OtherModule[Swift]/IsSystem: + {#String#}[#String#] @@ -208,7 +274,7 @@ func testInfixOperator3(_ x: String) { // INFIX_STRING: End completions func testInfixOperator4(_ x: String) { - x == ""#^INFIX_EXT_STRING_1?check=INFIX_EXT_STRING^# + x == ""#^INFIX_EXT_STRING_1^# } // INFIX_EXT_STRING: Begin completions // INFIX_EXT_STRING-DAG: Decl[InfixOperatorFunction]/OtherModule[Swift]/IsSystem: + {#String#}[#String#] diff --git a/test/IDE/complete_value_expr_call_pattern_heuristics.swift b/test/IDE/complete_value_expr_call_pattern_heuristics.swift new file mode 100644 index 0000000000000..d0bfb4f50abf3 --- /dev/null +++ b/test/IDE/complete_value_expr_call_pattern_heuristics.swift @@ -0,0 +1,25 @@ +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=BEFORE_COMMA -code-complete-call-pattern-heuristics | %FileCheck %s -check-prefix=BEFORE_COMMA +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=BEFORE_PLACEHOLDER -code-complete-call-pattern-heuristics | %FileCheck %s -check-prefix=BEFORE_PLACEHOLDER + +// FIXME: This tests are extracted from complete_value_expr.swift because +// '-batch-code-completion' doesn't support '-code-complete-call-pattern-heuristics' +// Please moved them back to it when it's supported. + +struct FooStruct { + mutating func instanceFunc2(_ a: Int, b: inout Double) {} +} + +func testInsideFunctionCall_1(_ x: inout FooStruct) { + x.instanceFunc(#^BEFORE_COMMA^#, +// BEFORE_COMMA: Begin completions +// BEFORE_COMMA-NOT: Pattern/{{.*}}:{{.*}}({{.*}}{#Int#} +// BOFORE_COMMA-NOT: Decl[InstanceMethod]/{{.*}}:{{.*}}({{.*}}{#Int#} +// BEFORE_COMMA: End completions +} +func testInsideFunctionCall_2(_ x: inout FooStruct) { + x.instanceFunc(#^BEFORE_PLACEHOLDER^#<#placeholder#> +// BEFORE_PLACEHOLDER: Begin completions +// BEFORE_PLACEHOLDER-NOT: Pattern/{{.*}}:{{.*}}({{.*}}{#Int#} +// BOFORE_PLACEHOLDER-NOT: Decl[InstanceMethod]/{{.*}}:{{.*}}({{.*}}{#Int#} +// BEFORE_PLACEHOLDER: End completions +} diff --git a/test/IDE/complete_value_literals.swift b/test/IDE/complete_value_literals.swift index 25582a8849d07..d4363eaa4b9e6 100644 --- a/test/IDE/complete_value_literals.swift +++ b/test/IDE/complete_value_literals.swift @@ -1,5 +1,36 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=NO_CONTEXT_0 | %FileCheck %s -check-prefix=NO_CONTEXT_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=NIL_0 | %FileCheck %s -check-prefix=NIL_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=NIL_1 | %FileCheck %s -check-prefix=NIL_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=NIL_2 | %FileCheck %s -check-prefix=NIL_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=BOOL_0 | %FileCheck %s -check-prefix=BOOL_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=BOOL_1 | %FileCheck %s -check-prefix=BOOL_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=BOOL_2 | %FileCheck %s -check-prefix=BOOL_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=BOOL_3 | %FileCheck %s -check-prefix=BOOL_3 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=BOOL_4 | %FileCheck %s -check-prefix=BOOL_4 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INT_0 | %FileCheck %s -check-prefix=INT_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INT_1 | %FileCheck %s -check-prefix=INT_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INT_2 | %FileCheck %s -check-prefix=INT_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=DOUBLE_0 | %FileCheck %s -check-prefix=DOUBLE_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STRING_0 | %FileCheck %s -check-prefix=STRING_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STRING_1 | %FileCheck %s -check-prefix=STRING_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STRING_2 | %FileCheck %s -check-prefix=STRING_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STRING_3 | %FileCheck %s -check-prefix=STRING_3 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STRING_4 | %FileCheck %s -check-prefix=STRING_4 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=STRING_5 | %FileCheck %s -check-prefix=STRING_5 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=ARRAY_0 | %FileCheck %s -check-prefix=ARRAY_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=ARRAY_1 | %FileCheck %s -check-prefix=ARRAY_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=ARRAY_2 | %FileCheck %s -check-prefix=ARRAY_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=DICT_0 | %FileCheck %s -check-prefix=DICT_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=DICT_1 | %FileCheck %s -check-prefix=DICT_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=DICT_2 | %FileCheck %s -check-prefix=DICT_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=TUPLE_0 | %FileCheck %s -check-prefix=TUPLE_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=TUPLE_1 | %FileCheck %s -check-prefix=TUPLE_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=TUPLE_2 | %FileCheck %s -check-prefix=TUPLE_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=COLOR_0 | %FileCheck %s -check-prefix=COLOR_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=COLOR_1 | %FileCheck %s -check-prefix=COLOR_1 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=COLOR_2 | %FileCheck %s -check-prefix=COLOR_2 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=IMAGE_0 | %FileCheck %s -check-prefix=IMAGE_0 +// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=IMAGE_1 | %FileCheck %s -check-prefix=IMAGE_1 func testAll0() { // Not type context. diff --git a/test/IDE/complete_where_clause.swift b/test/IDE/complete_where_clause.swift index 632bce344f8a8..19964e8df73dc 100644 --- a/test/IDE/complete_where_clause.swift +++ b/test/IDE/complete_where_clause.swift @@ -1,5 +1,46 @@ -// RUN: %empty-directory(%t) -// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GP1 | %FileCheck %s -check-prefix=A1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GP2 | %FileCheck %s -check-prefix=A1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GP3 | %FileCheck %s -check-prefix=A1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GP4 | %FileCheck %s -check-prefix=TYPE1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GP5 | %FileCheck %s -check-prefix=TYPE1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GP6 | %FileCheck %s -check-prefix=EMPTY +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_ASSOC_NODUP_1 | %FileCheck %s -check-prefix=GEN_T_ASSOC_E +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_ASSOC_NODUP_2 | %FileCheck %s -check-prefix=GEN_T_ASSOC_E +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_1 | %FileCheck %s -check-prefix=GEN_T +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_2_ASSOC | %FileCheck %s -check-prefix=GEN_T_ASSOC_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_3 | %FileCheck %s -check-prefix=GEN_T +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_4 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_5 | %FileCheck %s -check-prefix=GEN_T_S1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FUNC_6 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_1 | %FileCheck %s -check-prefix=GEN_T_S1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUBSCRIPT_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_1 | %FileCheck %s -check-prefix=GEN_T_S1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INIT_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ALIAS_1 | %FileCheck %s -check-prefix=GEN_T_S1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ALIAS_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STRUCT_1 | %FileCheck %s -check-prefix=GEN_T_NOMINAL +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STRUCT_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STRUCT_3 | %FileCheck %s -check-prefix=ANYTYPE +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=STRUCT_4 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_1 | %FileCheck %s -check-prefix=GEN_T_NOMINAL +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_1 | %FileCheck %s -check-prefix=GEN_T_NOMINAL +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ENUM_2 | %FileCheck %s -check-prefix=GEN_T_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ASSOC_1 | %FileCheck %s -check-prefix=P2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=ASSOC_2 | %FileCheck %s -check-prefix=U_DOT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PROTOCOL | %FileCheck %s -check-prefix=PROTOCOL +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PROTOCOL_EXT | %FileCheck %s -check-prefix=PROTOCOL +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PROTOCOL_SELF | %FileCheck %s -check-prefix=PROTOCOL_SELF +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NOMINAL_TYPEALIAS | %FileCheck %s -check-prefix=NOMINAL_TYPEALIAS +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NOMINAL_TYPEALIAS_EXT | %FileCheck %s -check-prefix=NOMINAL_TYPEALIAS_EXT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NOMINAL_TYPEALIAS_NESTED1 | %FileCheck %s -check-prefix=NOMINAL_TYPEALIAS_NESTED1 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NOMINAL_TYPEALIAS_NESTED2 | %FileCheck %s -check-prefix=NOMINAL_TYPEALIAS_NESTED2 +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NOMINAL_TYPEALIAS_NESTED1_EXT | %FileCheck %s -check-prefix=NOMINAL_TYPEALIAS_NESTED1_EXT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NOMINAL_TYPEALIAS_NESTED2_EXT | %FileCheck %s -check-prefix=NOMINAL_TYPEALIAS_NESTED2_EXT +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXT_ASSOC_MEMBER_1 | %FileCheck %s -check-prefix=EXT_ASSOC_MEMBER +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXT_ASSOC_MEMBER_2 | %FileCheck %s -check-prefix=EXT_ASSOC_MEMBER +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXT_SECONDTYPE | %FileCheck %s -check-prefix=EXT_SECONDTYPE class A1 {} @@ -7,17 +48,17 @@ class A2 {} protocol P1 {} -extension A1 where #^GP1?check=A1^#{} +extension A1 where #^GP1^#{} -extension A1 where T1 : P1, #^GP2?check=A1^# {} +extension A1 where T1 : P1, #^GP2^# {} -extension A1 where T1 : P1, #^GP3?check=A1^# +extension A1 where T1 : P1, #^GP3^# -extension A1 where T1 : #^GP4?check=TYPE1^# +extension A1 where T1 : #^GP4^# -extension A1 where T1 : P1, T2 : #^GP5?check=TYPE1^# +extension A1 where T1 : P1, T2 : #^GP5^# -extension A1 where T1.#^GP6?check=EMPTY^# {} +extension A1 where T1.#^GP6^# {} // A1: Begin completions // A1-DAG: Decl[GenericTypeParam]/Local: T1[#T1#]; name=T1 @@ -49,9 +90,9 @@ protocol B {associatedtype E} protocol C {associatedtype E} protocol D: C {associatedtype E} -func ab(_ arg: T) where T.#^FUNC_ASSOC_NODUP_1?check=GEN_T_ASSOC_E^# +func ab(_ arg: T) where T.#^FUNC_ASSOC_NODUP_1^# -func ab(_ arg: T) where T.#^FUNC_ASSOC_NODUP_2?check=GEN_T_ASSOC_E^# +func ab(_ arg: T) where T.#^FUNC_ASSOC_NODUP_2^# // GEN_T_ASSOC_E: Begin completions, 2 items // GEN_T_ASSOC_E-NEXT: Decl[AssociatedType]/{{Super|CurrNominal}}: E; name=E @@ -62,30 +103,30 @@ protocol Assoc { associatedtype Q } -func f1(_: T) where #^FUNC_1?check=GEN_T^# {} +func f1(_: T) where #^FUNC_1^# {} // GEN_T: Decl[GenericTypeParam]/Local: T[#T#]; name=T -func f2(_: T) where T.#^FUNC_2?check=GEN_T_DOT^# {} +func f2(_: T) where T.#^FUNC_2^# {} // GEN_T_DOT: Begin completions // GEN_T_DOT-DAG: Keyword/None: Type[#T.Type#]; // GEN_T_DOT-NOT: Keyword/CurrNominal: self[#T#]; // GEN_T_DOT: End completions -func f2b(_: T) where T.#^FUNC_2_ASSOC?check=GEN_T_ASSOC_DOT^# {} +func f2b(_: T) where T.#^FUNC_2_ASSOC^# {} // GEN_T_ASSOC_DOT: Begin completions // GEN_T_ASSOC_DOT-DAG: Decl[AssociatedType]/{{Super|CurrNominal}}: Q; // GEN_T_ASSOC_DOT-DAG: Keyword/None: Type[#T.Type#]; // GEN_T_ASSOC_DOT-NOT: Keyword/CurrNominal: self[#T#]; // GEN_T_ASSOC_DOT: End completions -func f3(_: T) where T == #^FUNC_3?check=GEN_T^# {} -func f3(_: T) where T == T.#^FUNC_4?check=GEN_T_DOT^# {} +func f3(_: T) where T == #^FUNC_3^# {} +func f3(_: T) where T == T.#^FUNC_4^# {} struct S1 { - func f1(_: T) where #^FUNC_5?check=GEN_T_S1^# {} - func f2(_: T) where T.#^FUNC_6?check=GEN_T_DOT^# {} - subscript(x: T) -> T where #^SUBSCRIPT_1?check=GEN_T_S1^# { return x } - subscript(x: T) -> T where T.#^SUBSCRIPT_2?check=GEN_T_DOT^# { return x } - init(_: T) where #^INIT_1?check=GEN_T_S1^# {} - init(_: T) where T.#^INIT_2?check=GEN_T_DOT^# {} - typealias TA1 = A1 where #^ALIAS_1?check=GEN_T_S1^# - typealias TA2 = A1 where T.#^ALIAS_2?check=GEN_T_DOT^# + func f1(_: T) where #^FUNC_5^# {} + func f2(_: T) where T.#^FUNC_6^# {} + subscript(x: T) -> T where #^SUBSCRIPT_1^# { return x } + subscript(x: T) -> T where T.#^SUBSCRIPT_2^# { return x } + init(_: T) where #^INIT_1^# {} + init(_: T) where T.#^INIT_2^# {} + typealias TA1 = A1 where #^ALIAS_1^# + typealias TA2 = A1 where T.#^ALIAS_2^# } // GEN_T_S1: Begin completions, 3 items // GEN_T_S1-DAG: Decl[GenericTypeParam]/Local: T[#T#]; @@ -93,14 +134,14 @@ struct S1 { // GEN_T_S1-DAG: Keyword[Self]/CurrNominal: Self[#S1#]; // GEN_T_S1: End completions -struct S2 where #^STRUCT_1?check=GEN_T_NOMINAL^# {} -struct S3 where T.#^STRUCT_2?check=GEN_T_DOT^# {} -struct S4 where T == #^STRUCT_3?check=ANYTYPE^# {} -struct S5 where T == T.#^STRUCT_4?check=GEN_T_DOT^# {} -class C1 where #^CLASS_1?check=GEN_T_NOMINAL^# {} -class C2 where T.#^CLASS_2?check=GEN_T_DOT^# {} -enum E1 where #^ENUM_1?check=GEN_T_NOMINAL^# {} -enum E2 where T.#^ENUM_2?check=GEN_T_DOT^# {} +struct S2 where #^STRUCT_1^# {} +struct S3 where T.#^STRUCT_2^# {} +struct S4 where T == #^STRUCT_3^# {} +struct S5 where T == T.#^STRUCT_4^# {} +class C1 where #^CLASS_1^# {} +class C2 where T.#^CLASS_2^# {} +enum E1 where #^ENUM_1^# {} +enum E2 where T.#^ENUM_2^# {} // GEN_T_NOMINAL: Begin completions, 1 items // GEN_T_NOMINAL: Decl[GenericTypeParam]/Local: T[#T#]; name=T // GEN_T_NOMINAL: End completions @@ -112,8 +153,8 @@ enum E2 where T.#^ENUM_2?check=GEN_T_DOT^# {} // ANYTYPE: End completions protocol P2 { - associatedtype T where #^ASSOC_1?check=P2^# - associatedtype U: Assoc where U.#^ASSOC_2?check=U_DOT^# + associatedtype T where #^ASSOC_1^# + associatedtype U: Assoc where U.#^ASSOC_2^# } // P2: Begin completions, 4 items @@ -140,7 +181,7 @@ protocol P3 where #^PROTOCOL^# { // PROTOCOL-DAG: Decl[Protocol]/Local: P3[#P3#]; // PROTOCOL: End completions -extension P3 where #^PROTOCOL_EXT?check=PROTOCOL^# { +extension P3 where #^PROTOCOL_EXT^# { // Same as PROTOCOL } @@ -210,13 +251,13 @@ extension TA2.Inner2 where #^NOMINAL_TYPEALIAS_NESTED2_EXT^# {} protocol WithAssoc { associatedtype T: Assoc } -extension WithAssoc where T.#^EXT_ASSOC_MEMBER_1?check=EXT_ASSOC_MEMBER^# +extension WithAssoc where T.#^EXT_ASSOC_MEMBER_1^# // EXT_ASSOC_MEMBER: Begin completions, 2 items // EXT_ASSOC_MEMBER-DAG: Decl[AssociatedType]/CurrNominal: Q; // EXT_ASSOC_MEMBER-DAG: Keyword/None: Type[#Self.T.Type#]; // EXT_ASSOC_MEMBER: End completions -extension WithAssoc where Int == T.#^EXT_ASSOC_MEMBER_2?check=EXT_ASSOC_MEMBER^# +extension WithAssoc where Int == T.#^EXT_ASSOC_MEMBER_2^# // Same as EXT_ASSOC_MEMBER extension WithAssoc where Int == #^EXT_SECONDTYPE^#