class Foo {} class Base { init() {} func base() {} } class FooBar { init() {} init(x: Foo) {} static func fooBar() {} static func fooBaz() {} func method() {} let prop: FooBar { return FooBar() } subscript(x: Foo) -> Foo {} } func test001() { #^TOP_LEVEL_0,fo,foo,foob,foobar^# } // RUN: %complete-test %s -no-fuzz -group=none -add-inner-results -tok=TOP_LEVEL_0 | FileCheck %s -check-prefix=TOP_LEVEL_0 // TOP_LEVEL_0-LABEL: Results for filterText: fo [ // TOP_LEVEL_0-NEXT: for // TOP_LEVEL_0-NEXT: Foo // TOP_LEVEL_0-NEXT: FooBar // TOP_LEVEL_0: ] // TOP_LEVEL_0-LABEL: Results for filterText: foo [ // TOP_LEVEL_0-NEXT: Foo( // TOP_LEVEL_0-NEXT: FooBar // TOP_LEVEL_0-NEXT: Foo() // TOP_LEVEL_0-NEXT: ] // TOP_LEVEL_0-LABEL: Results for filterText: foob [ // TOP_LEVEL_0-NEXT: FooBar // TOP_LEVEL_0-NEXT: ] // TOP_LEVEL_0-LABEL: Results for filterText: foobar [ // TOP_LEVEL_0-NEXT: FooBar. // TOP_LEVEL_0-NEXT: FooBar( // TOP_LEVEL_0-NEXT: FooBar() // TOP_LEVEL_0-NEXT: FooBar(x: Foo) // TOP_LEVEL_0-NEXT: FooBar.fooBar() // TOP_LEVEL_0-NEXT: FooBar.fooBaz() // TOP_LEVEL_0: ] func test002(abc: FooBar, abd: Base) { #^TOP_LEVEL_1,ab,abc,abd^# } // RUN: %complete-test %s -no-fuzz -group=none -add-inner-results -tok=TOP_LEVEL_1 | FileCheck %s -check-prefix=TOP_LEVEL_1 // TOP_LEVEL_1-LABEL: Results for filterText: ab [ // TOP_LEVEL_1-NEXT: abc // TOP_LEVEL_1-NEXT: abd // TOP_LEVEL_1: ] // TOP_LEVEL_1-LABEL: Results for filterText: abc [ // TOP_LEVEL_1-NEXT: abc. // TOP_LEVEL_1-NEXT: abc!== // TOP_LEVEL_1-NEXT: abc=== // TOP_LEVEL_1-NEXT: abc.method() // TOP_LEVEL_1-NEXT: abc.prop // TOP_LEVEL_1-NEXT: ] // TOP_LEVEL_1-LABEL: Results for filterText: abd [ // TOP_LEVEL_1-NEXT: abd. // TOP_LEVEL_1-NEXT: abd!== // TOP_LEVEL_1-NEXT: abd=== // TOP_LEVEL_1-NEXT: abd.base() // TOP_LEVEL_1-NEXT: ] func test003(x: FooBar) { x.#^FOOBAR_QUALIFIED,pro,prop,prop.^# } // RUN: %complete-test %s -group=none -add-inner-results -tok=FOOBAR_QUALIFIED | FileCheck %s -check-prefix=FOOBAR_QUALIFIED // FOOBAR_QUALIFIED-LABEL: Results for filterText: pro [ // FOOBAR_QUALIFIED-NEXT: prop // FOOBAR_QUALIFIED-NEXT: ] // FOOBAR_QUALIFIED-LABEL: Results for filterText: prop [ // FOOBAR_QUALIFIED-NEXT: prop. // FOOBAR_QUALIFIED: prop.method() // FOOBAR_QUALIFIED-NEXT: prop.prop // FOOBAR_QUALIFIED-NEXT: ] // Just don't explode. We generally expect to get a new session here. // FOOBAR_QUALIFIED-LABEL: Results for filterText: prop. [ // FOOBAR_QUALIFIED-NEXT: ] // RUN: %complete-test %s -group=none -no-inner-results -inner-operators -tok=FOOBAR_QUALIFIED | FileCheck %s -check-prefix=FOOBAR_QUALIFIED_OP // FOOBAR_QUALIFIED_OP-LABEL: Results for filterText: pro [ // FOOBAR_QUALIFIED_OP-NEXT: prop // FOOBAR_QUALIFIED_OP-NEXT: ] // FOOBAR_QUALIFIED_OP-LABEL: Results for filterText: prop [ // FOOBAR_QUALIFIED_OP-NEXT: prop. // FOOBAR_QUALIFIED_OP: ] // RUN: %complete-test %s -group=none -add-inner-results -no-inner-operators -tok=FOOBAR_QUALIFIED | FileCheck %s -check-prefix=FOOBAR_QUALIFIED_NOOP // FOOBAR_QUALIFIED_NOOP-LABEL: Results for filterText: pro [ // FOOBAR_QUALIFIED_NOOP-NEXT: prop // FOOBAR_QUALIFIED_NOOP-NEXT: ] // FOOBAR_QUALIFIED_NOOP-LABEL: Results for filterText: prop [ // FOOBAR_QUALIFIED_NOOP-NEXT: prop.method() // FOOBAR_QUALIFIED_NOOP-NEXT: prop.prop // FOOBAR_QUALIFIED_NOOP-NEXT: ] func test004() { FooBar#^FOOBAR_POSTFIX^# } // RUN: %complete-test %s -group=none -no-inner-results -inner-operators -tok=FOOBAR_POSTFIX | FileCheck %s -check-prefix=FOOBAR_POSTFIX_OP // FOOBAR_POSTFIX_OP: {{^}}.{{$}} // FOOBAR_POSTFIX_OP: {{^}}({{$}} func test005(x: FooBar) { x#^FOOBAR_INSTANCE_POSTFIX^# } // RUN: %complete-test %s -group=none -no-inner-results -inner-operators -tok=FOOBAR_INSTANCE_POSTFIX | FileCheck %s -check-prefix=FOOBAR_INSTANCE_POSTFIX_OP // FOOBAR_INSTANCE_POSTFIX_OP: . // FIXME: We should probably just have '[' here - rdar://22702955 // FOOBAR_INSTANCE_POSTFIX_OP: [Foo] func test005(x: Base?) { x#^OPTIONAL_POSTFIX^# } // RUN: %complete-test %s -group=none -no-inner-results -inner-operators -tok=OPTIONAL_POSTFIX | FileCheck %s -check-prefix=OPTIONAL_POSTFIX_OP // OPTIONAL_POSTFIX_OP: . // OPTIONAL_POSTFIX_OP: ?. // RUN: %complete-test %s -group=none -no-inner-results -inner-operators -tok=KEYWORD_0 | FileCheck %s -check-prefix=KEYWORD_0 func test006() { #^KEYWORD_0,for^# } // KEYWORD_0-NOT: for_ // KEYWORD_0-NOT: fortest // KEYWORD_0-NOT: for.