Skip to content

Commit 70ba974

Browse files
committed
---
yaml --- r: 274941 b: refs/heads/master c: 489a538 h: refs/heads/master i: 274939: 7e99354
1 parent 5cf2459 commit 70ba974

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: c99af839011646fcafc91ebbab16c95e6a0e31d3
2+
refs/heads/master: 489a53864c0837c846f27a76f77ea8538d746324
33
refs/heads/master-next: 75552d2b66023907022c17dfd899aae8b198add5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/lib/IDE/CodeCompletion.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2545,6 +2545,10 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
25452545
if (HaveDot && !IsAfterSwiftKeyPathRoot)
25462546
return;
25472547

2548+
auto subscriptType = getTypeOfMember(SD)->getAs<AnyFunctionType>();
2549+
if (!subscriptType)
2550+
return;
2551+
25482552
CommandWordsPairs Pairs;
25492553
CodeCompletionResultBuilder Builder(
25502554
Sink,
@@ -2563,19 +2567,17 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
25632567
}
25642568

25652569
Builder.addLeftBracket();
2566-
addCallArgumentPatterns(Builder,
2567-
getTypeOfMember(SD)->castTo<AnyFunctionType>(),
2568-
SD->getIndices(), true);
2570+
addCallArgumentPatterns(Builder, subscriptType, SD->getIndices(), true);
25692571
Builder.addRightBracket();
25702572

25712573
// Add a type annotation.
2572-
Type T = SD->getElementInterfaceType();
2574+
Type resultTy = subscriptType->getResult();
25732575
if (IsDynamicLookup) {
25742576
// Values of properties that were found on a AnyObject have
25752577
// Optional<T> type.
2576-
T = OptionalType::get(T);
2578+
resultTy = OptionalType::get(resultTy);
25772579
}
2578-
addTypeAnnotation(Builder, T);
2580+
addTypeAnnotation(Builder, resultTy);
25792581
}
25802582

25812583
void addNominalTypeRef(const NominalTypeDecl *NTD,

trunk/test/IDE/complete_swift_key_path.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,16 @@ let _ = \Person.#^TYPE_DOT^#
5353

5454
let _ = \Person.friends#^ARRAY_NODOT^#
5555
// ARRAY-NODOT: Begin completions
56-
// ARRAY-NODOT-DAG: Decl[Subscript]/CurrNominal: [{#(index): Int#}][#Element#]; name=[index: Int]
56+
// ARRAY-NODOT-DAG: Decl[Subscript]/CurrNominal: [{#(index): Int#}][#Person#]; name=[index: Int]
5757
// ARRAY-NODOT-DAG: Decl[InstanceVar]/CurrNominal: .count[#Int#]; name=count
5858
// ARRAY-NODOT-DAG: Decl[InstanceVar]/Super: .first[#Person?#]; name=first
5959

6060
let _ = \Person.friends.#^ARRAY_DOT^#
6161
// ARRAY-DOT: Begin completions
62-
// ARRAY-DOT-NOT: Decl[Subscript]/CurrNominal: [{#Int#}][#Element#]; name=[Int]
62+
// ARRAY-DOT-NOT: Decl[Subscript]/CurrNominal: [{#(index): Int#}][#Element#]; name=[Int]
6363
// ARRAY-DOT-DAG: Decl[InstanceVar]/CurrNominal: count[#Int#]; name=count
6464
// ARRAY-DOT-DAG: Decl[InstanceVar]/Super: first[#Person?#]; name=first
65-
// ARRAY-DOT-NOT: Decl[Subscript]/CurrNominal: [{#Int#}][#Element#]; name=[Int]
65+
// ARRAY-DOT-NOT: Decl[Subscript]/CurrNominal: [{#(index): Int#}][#Element#]; name=[Int]
6666

6767
let _ = \Person.friends[0]#^OBJ_NODOT^#
6868
// OBJ-NODOT: Begin completions, 5 items
@@ -110,13 +110,13 @@ let _ = \Person.bestFriend?.itself.#^CHAIN_DOT^#
110110

111111
let _ = \[Person]#^ARRAYTYPE_NODOT^#
112112
// ARRAYTYPE-NODOT: Begin completions
113-
// ARRAYTYPE-NODOT-DAG: Decl[Subscript]/CurrNominal: .[{#(index): Int#}][#Element#]; name=[index: Int]
113+
// ARRAYTYPE-NODOT-DAG: Decl[Subscript]/CurrNominal: .[{#(index): Int#}][#Person#]; name=[index: Int]
114114
// ARRAYTYPE-NODOT-DAG: Decl[InstanceVar]/CurrNominal: .count[#Int#]; name=count
115115
// ARRAYTYPE-NODOT-DAG: Decl[InstanceVar]/Super: .first[#Person?#]; name=first
116116

117117
let _ = \[Person].#^ARRAYTYPE_DOT^#
118118
// ARRAYTYPE-DOT: Begin completions
119-
// ARRAYTYPE-DOT-DAG: Decl[Subscript]/CurrNominal: [{#(index): Int#}][#Element#]; name=[index: Int]
119+
// ARRAYTYPE-DOT-DAG: Decl[Subscript]/CurrNominal: [{#(index): Int#}][#Person#]; name=[index: Int]
120120
// ARRAYTYPE-DOT-DAG: Decl[InstanceVar]/CurrNominal: count[#Int#]; name=count
121121
// ARRAYTYPE-DOT-DAG: Decl[InstanceVar]/Super: first[#Person?#]; name=first
122122

trunk/test/IDE/complete_value_expr.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1890,7 +1890,7 @@ func testDeDuped2(_ x: dedupP) {
18901890
// PROTOCOL_EXT_DEDUP_2: Begin completions, 5 items
18911891
// PROTOCOL_EXT_DEDUP_2: Decl[InstanceMethod]/CurrNominal: .foo()[#dedupP.T#]; name=foo()
18921892
// PROTOCOL_EXT_DEDUP_2: Decl[InstanceVar]/CurrNominal: .bar[#dedupP.T#]; name=bar
1893-
// PROTOCOL_EXT_DEDUP_2: Decl[Subscript]/CurrNominal: [{#(x): dedupP.T#}][#Self.T#]; name=[x: dedupP.T]
1893+
// PROTOCOL_EXT_DEDUP_2: Decl[Subscript]/CurrNominal: [{#(x): dedupP.T#}][#dedupP.T#]; name=[x: dedupP.T]
18941894
// PROTOCOL_EXT_DEDUP_2: Keyword[self]/CurrNominal: .self[#dedupP#]; name=self
18951895
// PROTOCOL_EXT_DEDUP_2: End completions
18961896
}
@@ -1899,7 +1899,7 @@ func testDeDuped3<T : dedupP where T.T == Int>(_ x: T) {
18991899
// PROTOCOL_EXT_DEDUP_3: Begin completions, 5 items
19001900
// PROTOCOL_EXT_DEDUP_3: Decl[InstanceMethod]/CurrNominal: .foo()[#Int#]; name=foo()
19011901
// PROTOCOL_EXT_DEDUP_3: Decl[InstanceVar]/CurrNominal: .bar[#Int#]; name=bar
1902-
// PROTOCOL_EXT_DEDUP_3: Decl[Subscript]/CurrNominal: [{#(x): Int#}][#Self.T#]; name=[x: Int]
1902+
// PROTOCOL_EXT_DEDUP_3: Decl[Subscript]/CurrNominal: [{#(x): Int#}][#Int#]; name=[x: Int]
19031903
// PROTOCOL_EXT_DEDUP_3: Keyword[self]/CurrNominal: .self[#T#]; name=self
19041904
// PROTOCOL_EXT_DEDUP_3: End completions
19051905
}

0 commit comments

Comments
 (0)