Skip to content

Commit 7d498b1

Browse files
committed
[SourceKit] Add test cases for type relation in code completion
1 parent 71aeffd commit 7d498b1

File tree

3 files changed

+220
-0
lines changed

3 files changed

+220
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
protocol MyProto {}
2+
enum MyEnum : MyProto {
3+
case foo
4+
case bar(Int)
5+
6+
static func staticReturnVoid() {}
7+
static func staticReturnMyEnum() -> MyEnum { return .foo }
8+
func intanceReturnVoid() {}
9+
func intanceReturnMyEnum() -> MyEnum { return .foo }
10+
}
11+
12+
func testIdenticalContext() -> MyEnum {
13+
return MyEnum.
14+
}
15+
16+
func testConvertibleContext() -> MyProto {
17+
return MyEnum.
18+
}
19+
20+
// RUN: %sourcekitd-test -req=complete -pos=13:17 %s -- %s > %t.identical.response
21+
// RUN: diff -u %s.identical.response %t.identical.response
22+
23+
// RUN: %sourcekitd-test -req=complete -pos=17:17 %s -- %s > %t.convertible.response
24+
// RUN: diff -u %s.convertible.response %t.convertible.response
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
{
2+
key.results: [
3+
{
4+
key.kind: source.lang.swift.decl.enumelement,
5+
key.name: "bar()",
6+
key.sourcetext: "bar(<#T##Int#>)",
7+
key.description: "bar(Int)",
8+
key.typename: "MyEnum",
9+
key.context: source.codecompletion.context.thisclass,
10+
key.typerelation: source.codecompletion.typerelation.convertible,
11+
key.num_bytes_to_erase: 0,
12+
key.associated_usrs: "s:21complete_typerelation6MyEnumO3baryACSicACmF",
13+
key.modulename: "complete_typerelation"
14+
},
15+
{
16+
key.kind: source.lang.swift.decl.enumelement,
17+
key.name: "foo",
18+
key.sourcetext: "foo",
19+
key.description: "foo",
20+
key.typename: "MyEnum",
21+
key.context: source.codecompletion.context.thisclass,
22+
key.typerelation: source.codecompletion.typerelation.convertible,
23+
key.num_bytes_to_erase: 0,
24+
key.associated_usrs: "s:21complete_typerelation6MyEnumO3fooyA2CmF",
25+
key.modulename: "complete_typerelation"
26+
},
27+
{
28+
key.kind: source.lang.swift.decl.function.method.instance,
29+
key.name: "intanceReturnMyEnum(:)",
30+
key.sourcetext: "intanceReturnMyEnum(<#T##self: MyEnum##MyEnum#>)",
31+
key.description: "intanceReturnMyEnum(self: MyEnum)",
32+
key.typename: "() -> MyEnum",
33+
key.context: source.codecompletion.context.thisclass,
34+
key.typerelation: source.codecompletion.typerelation.convertible,
35+
key.num_bytes_to_erase: 0,
36+
key.associated_usrs: "s:21complete_typerelation6MyEnumO013intanceReturncD0ACyF",
37+
key.modulename: "complete_typerelation"
38+
},
39+
{
40+
key.kind: source.lang.swift.decl.function.method.instance,
41+
key.name: "intanceReturnVoid(:)",
42+
key.sourcetext: "intanceReturnVoid(<#T##self: MyEnum##MyEnum#>)",
43+
key.description: "intanceReturnVoid(self: MyEnum)",
44+
key.typename: "() -> Void",
45+
key.context: source.codecompletion.context.thisclass,
46+
key.typerelation: source.codecompletion.typerelation.invalid,
47+
key.num_bytes_to_erase: 0,
48+
key.not_recommended: 1,
49+
key.associated_usrs: "s:21complete_typerelation6MyEnumO17intanceReturnVoidyyF",
50+
key.modulename: "complete_typerelation"
51+
},
52+
{
53+
key.kind: source.lang.swift.keyword,
54+
key.name: "self",
55+
key.sourcetext: "self",
56+
key.description: "self",
57+
key.typename: "MyEnum.Type",
58+
key.context: source.codecompletion.context.thisclass,
59+
key.typerelation: source.codecompletion.typerelation.unrelated,
60+
key.num_bytes_to_erase: 0
61+
},
62+
{
63+
key.kind: source.lang.swift.decl.function.method.class,
64+
key.name: "staticReturnMyEnum()",
65+
key.sourcetext: "staticReturnMyEnum()",
66+
key.description: "staticReturnMyEnum()",
67+
key.typename: "MyEnum",
68+
key.context: source.codecompletion.context.thisclass,
69+
key.typerelation: source.codecompletion.typerelation.convertible,
70+
key.num_bytes_to_erase: 0,
71+
key.associated_usrs: "s:21complete_typerelation6MyEnumO012staticReturncD0ACyFZ",
72+
key.modulename: "complete_typerelation"
73+
},
74+
{
75+
key.kind: source.lang.swift.decl.function.method.class,
76+
key.name: "staticReturnVoid()",
77+
key.sourcetext: "staticReturnVoid()",
78+
key.description: "staticReturnVoid()",
79+
key.typename: "Void",
80+
key.context: source.codecompletion.context.thisclass,
81+
key.typerelation: source.codecompletion.typerelation.invalid,
82+
key.num_bytes_to_erase: 0,
83+
key.not_recommended: 1,
84+
key.associated_usrs: "s:21complete_typerelation6MyEnumO16staticReturnVoidyyFZ",
85+
key.modulename: "complete_typerelation"
86+
},
87+
{
88+
key.kind: source.lang.swift.keyword,
89+
key.name: "Type",
90+
key.sourcetext: "Type",
91+
key.description: "Type",
92+
key.typename: "MyEnum.Type",
93+
key.context: source.codecompletion.context.thisclass,
94+
key.typerelation: source.codecompletion.typerelation.unrelated,
95+
key.num_bytes_to_erase: 0
96+
}
97+
]
98+
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
{
2+
key.results: [
3+
{
4+
key.kind: source.lang.swift.decl.enumelement,
5+
key.name: "bar()",
6+
key.sourcetext: "bar(<#T##Int#>)",
7+
key.description: "bar(Int)",
8+
key.typename: "MyEnum",
9+
key.context: source.codecompletion.context.thisclass,
10+
key.typerelation: source.codecompletion.typerelation.identical,
11+
key.num_bytes_to_erase: 0,
12+
key.associated_usrs: "s:21complete_typerelation6MyEnumO3baryACSicACmF",
13+
key.modulename: "complete_typerelation"
14+
},
15+
{
16+
key.kind: source.lang.swift.decl.enumelement,
17+
key.name: "foo",
18+
key.sourcetext: "foo",
19+
key.description: "foo",
20+
key.typename: "MyEnum",
21+
key.context: source.codecompletion.context.thisclass,
22+
key.typerelation: source.codecompletion.typerelation.identical,
23+
key.num_bytes_to_erase: 0,
24+
key.associated_usrs: "s:21complete_typerelation6MyEnumO3fooyA2CmF",
25+
key.modulename: "complete_typerelation"
26+
},
27+
{
28+
key.kind: source.lang.swift.decl.function.method.instance,
29+
key.name: "intanceReturnMyEnum(:)",
30+
key.sourcetext: "intanceReturnMyEnum(<#T##self: MyEnum##MyEnum#>)",
31+
key.description: "intanceReturnMyEnum(self: MyEnum)",
32+
key.typename: "() -> MyEnum",
33+
key.context: source.codecompletion.context.thisclass,
34+
key.typerelation: source.codecompletion.typerelation.identical,
35+
key.num_bytes_to_erase: 0,
36+
key.associated_usrs: "s:21complete_typerelation6MyEnumO013intanceReturncD0ACyF",
37+
key.modulename: "complete_typerelation"
38+
},
39+
{
40+
key.kind: source.lang.swift.decl.function.method.instance,
41+
key.name: "intanceReturnVoid(:)",
42+
key.sourcetext: "intanceReturnVoid(<#T##self: MyEnum##MyEnum#>)",
43+
key.description: "intanceReturnVoid(self: MyEnum)",
44+
key.typename: "() -> Void",
45+
key.context: source.codecompletion.context.thisclass,
46+
key.typerelation: source.codecompletion.typerelation.invalid,
47+
key.num_bytes_to_erase: 0,
48+
key.not_recommended: 1,
49+
key.associated_usrs: "s:21complete_typerelation6MyEnumO17intanceReturnVoidyyF",
50+
key.modulename: "complete_typerelation"
51+
},
52+
{
53+
key.kind: source.lang.swift.keyword,
54+
key.name: "self",
55+
key.sourcetext: "self",
56+
key.description: "self",
57+
key.typename: "MyEnum.Type",
58+
key.context: source.codecompletion.context.thisclass,
59+
key.typerelation: source.codecompletion.typerelation.unrelated,
60+
key.num_bytes_to_erase: 0
61+
},
62+
{
63+
key.kind: source.lang.swift.decl.function.method.class,
64+
key.name: "staticReturnMyEnum()",
65+
key.sourcetext: "staticReturnMyEnum()",
66+
key.description: "staticReturnMyEnum()",
67+
key.typename: "MyEnum",
68+
key.context: source.codecompletion.context.thisclass,
69+
key.typerelation: source.codecompletion.typerelation.identical,
70+
key.num_bytes_to_erase: 0,
71+
key.associated_usrs: "s:21complete_typerelation6MyEnumO012staticReturncD0ACyFZ",
72+
key.modulename: "complete_typerelation"
73+
},
74+
{
75+
key.kind: source.lang.swift.decl.function.method.class,
76+
key.name: "staticReturnVoid()",
77+
key.sourcetext: "staticReturnVoid()",
78+
key.description: "staticReturnVoid()",
79+
key.typename: "Void",
80+
key.context: source.codecompletion.context.thisclass,
81+
key.typerelation: source.codecompletion.typerelation.invalid,
82+
key.num_bytes_to_erase: 0,
83+
key.not_recommended: 1,
84+
key.associated_usrs: "s:21complete_typerelation6MyEnumO16staticReturnVoidyyFZ",
85+
key.modulename: "complete_typerelation"
86+
},
87+
{
88+
key.kind: source.lang.swift.keyword,
89+
key.name: "Type",
90+
key.sourcetext: "Type",
91+
key.description: "Type",
92+
key.typename: "MyEnum.Type",
93+
key.context: source.codecompletion.context.thisclass,
94+
key.typerelation: source.codecompletion.typerelation.unrelated,
95+
key.num_bytes_to_erase: 0
96+
}
97+
]
98+
}

0 commit comments

Comments
 (0)