| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_1 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_2 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_3 | %FileCheck %s -check-prefix=ERROR_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_4 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_5 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_6 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_7 | %FileCheck %s -check-prefix=ERROR_COMMON |
| |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IN_CONSTRUCTOR_1 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IN_CONSTRUCTOR_2 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IN_DESTRUCTOR_1 | %FileCheck %s -check-prefix=FOO_STRUCT_COMMON |
| |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IF_1 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IF_2 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IF_3 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IF_4 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IF_IN_CONSTRUCTOR_1 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TC_VAR_IF_IN_DESTRUCTOR_1 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPR_POSTFIX_BEGIN_1 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPR_POSTFIX_BEGIN_2 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPR_POSTFIX_BEGIN_IN_CONSTRUCTOR_1 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=EXPR_POSTFIX_BEGIN_IN_DESTRUCTOR_1 | %FileCheck %s -check-prefix=LOCALS_COMMON |
| |
| struct FooStruct { |
| var instanceVar = 0 |
| init(_ instanceVar: Int = 0) { } |
| func instanceFunc0() {} |
| |
| func builderFunc1() -> FooStruct { |
| return self |
| } |
| |
| func builderFunc2(_ a: Int) -> FooStruct { |
| return self |
| } |
| } |
| |
| // FOO_STRUCT_COMMON: Begin completions |
| // FOO_STRUCT_COMMON-NEXT: Keyword[self]/CurrNominal: self[#FooStruct#]; name=self |
| // FOO_STRUCT_COMMON-NEXT: Decl[InstanceVar]/CurrNominal: instanceVar[#Int#]{{; name=.+$}} |
| // FOO_STRUCT_COMMON-NEXT: Decl[InstanceMethod]/CurrNominal: instanceFunc0()[#Void#]{{; name=.+$}} |
| // FOO_STRUCT_COMMON-NEXT: Decl[InstanceMethod]/CurrNominal: builderFunc1()[#FooStruct#]{{; name=.+$}} |
| // FOO_STRUCT_COMMON-NEXT: Decl[InstanceMethod]/CurrNominal: builderFunc2({#(a): Int#})[#FooStruct#]{{; name=.+$}} |
| // FOO_STRUCT_COMMON-NEXT: End completions |
| |
| // ERROR_COMMON: found code completion token |
| // ERROR_COMMON-NOT: Begin completions |
| |
| // LOCALS_COMMON: Begin completions |
| // LOCALS_COMMON-DAG: Decl[LocalVar]/Local: localInt[#Int#]{{; name=.+$}} |
| // LOCALS_COMMON-DAG: Decl[LocalVar]/Local: localFooObject[#FooStruct#]{{; name=.+$}} |
| // LOCALS_COMMON: End completions |
| |
| func testTypecheckVar1() { |
| var localFooObject = FooStruct() |
| localFooObject.#^TC_VAR_1^# |
| } |
| |
| func testTypecheckVar2() { |
| var localFooObject = FooStruct(42) |
| localFooObject.#^TC_VAR_2^# |
| } |
| |
| func testTypecheckVar3() { |
| // FIXME: We don't display any useful completions here, although we could -- |
| // it is obvious that 'foo' could only have type 'FooStruct'. |
| // |
| // In any case, ensure that we don't crash. |
| var localFooObject = FooStruct(unknown_var) |
| localFooObject.#^TC_VAR_3^# |
| } |
| |
| func testTypecheckVar4() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| localFooObject.#^TC_VAR_4^# |
| } |
| |
| func testTypecheckVar5() { |
| var localInt = 42 |
| FooStruct(localInt).#^TC_VAR_5^# |
| } |
| |
| func testTypecheckVar6() { |
| var localInt = 42 |
| FooStruct(localInt).builderFunc1().#^TC_VAR_6^# |
| } |
| |
| func testTypecheckVar7() { |
| // FIXME: We don't display any useful completions here, although we could -- |
| // it is obvious that the expression could only have type 'FooStruct'. |
| // |
| // In any case, ensure that we don't crash. |
| var localInt = 42 |
| FooStruct(localInt).builderFunc2(unknown_var).#^TC_VAR_7^# |
| } |
| |
| class TestTypeCheckVarInConstructor1 { |
| init() { |
| var localFooObject = FooStruct() |
| localFooObject.#^TC_VAR_IN_CONSTRUCTOR_1^# |
| } |
| } |
| |
| class TestTypeCheckVarInConstructor2 { |
| init { // Missing parameters |
| var localFooObject = FooStruct() |
| localFooObject.#^TC_VAR_IN_CONSTRUCTOR_2^# |
| } |
| } |
| |
| class TestTypeCheckVarInDestructor1 { |
| deinit { |
| var localFooObject = FooStruct() |
| localFooObject.#^TC_VAR_IN_DESTRUCTOR_1^# |
| } |
| } |
| |
| func testTypecheckVarInIf1() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if true { |
| #^TC_VAR_IF_1^# |
| } |
| } |
| |
| func testTypecheckVarInIf2() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if true { |
| } else { |
| #^TC_VAR_IF_2^# |
| } |
| } |
| |
| func testTypecheckVarInIf3() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if { |
| #^TC_VAR_IF_3^# |
| } |
| } |
| |
| func testTypecheckVarInIf4() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if { |
| } else { |
| #^TC_VAR_IF_4^# |
| } |
| } |
| |
| class TestTypeCheckVarInIfInConstructor1 { |
| init() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if true { |
| #^TC_VAR_IF_IN_CONSTRUCTOR_1^# |
| } |
| } |
| } |
| |
| class TestTypeCheckVarInIfInDestructor1 { |
| deinit { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if true { |
| #^TC_VAR_IF_IN_DESTRUCTOR_1^# |
| } |
| } |
| } |
| |
| func testExprPostfixBegin1() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| #^EXPR_POSTFIX_BEGIN_1^# |
| } |
| |
| func testExprPostfixBegin2() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| if true {} |
| #^EXPR_POSTFIX_BEGIN_2^# |
| } |
| |
| class TestTypeCheckExprPostfixBeginInConstructor1 { |
| init() { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| #^EXPR_POSTFIX_BEGIN_IN_CONSTRUCTOR_1^# |
| } |
| } |
| |
| class TestTypeCheckExprPostfixBeginInDestructor1 { |
| deinit { |
| var localInt = 42 |
| var localFooObject = FooStruct(localInt) |
| #^EXPR_POSTFIX_BEGIN_IN_DESTRUCTOR_1^# |
| } |
| } |
| |