Skip to content

Commit 2420b6d

Browse files
author
Nathan Hawes
committed
[SourceKit] Don't report the ObjC runtime name without @objc(Name)
We used to compute the mangled name in other cases, but document structure is a syntactic request and can't guarantee that the class/protocol we're getting the mangled name of is valid in any way so it often breaks assumptions in the mangler and causes it to crash. It's not clear if the runtime_name is actually being used anymore, so this change restricts reporting it to just the cases where we don't need to mangle. rdar://problem/40956377
1 parent d5cb71a commit 2420b6d

15 files changed

+71
-120
lines changed

test/SourceKit/DocumentStructure/Inputs/main.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,6 @@ public extension Outer2 {
165165
}
166166
}
167167
#endif
168+
169+
@objc(FPBarProto)
170+
protocol BarProtocol {}

test/SourceKit/DocumentStructure/access_parse.swift.response

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
key.name: "DefAccess",
1010
key.offset: 0,
1111
key.length: 167,
12-
key.runtime_name: "_TtC6Access9DefAccess",
1312
key.nameoffset: 6,
1413
key.namelength: 9,
1514
key.bodyoffset: 17,
@@ -106,7 +105,6 @@
106105
key.name: "PubAccess",
107106
key.offset: 176,
108107
key.length: 211,
109-
key.runtime_name: "_TtC6Access9PubAccess",
110108
key.nameoffset: 182,
111109
key.namelength: 9,
112110
key.bodyoffset: 193,
@@ -234,7 +232,6 @@
234232
key.name: "IntAccess",
235233
key.offset: 398,
236234
key.length: 167,
237-
key.runtime_name: "_TtC6Access9IntAccess",
238235
key.nameoffset: 404,
239236
key.namelength: 9,
240237
key.bodyoffset: 415,
@@ -338,7 +335,6 @@
338335
key.name: "PrivAccess",
339336
key.offset: 575,
340337
key.length: 212,
341-
key.runtime_name: "_TtC6AccessP33_1EF422E8C69A0040C015C634ED7C6DE810PrivAccess",
342338
key.nameoffset: 581,
343339
key.namelength: 10,
344340
key.bodyoffset: 593,

test/SourceKit/DocumentStructure/structure.swift.empty.response

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
key.offset: 0,
3-
key.length: 2587,
3+
key.length: 2630,
44
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
55
key.substructure: [
66
{
@@ -9,7 +9,6 @@
99
key.name: "Foo",
1010
key.offset: 0,
1111
key.length: 173,
12-
key.runtime_name: "_TtC4main3Foo",
1312
key.nameoffset: 6,
1413
key.namelength: 3,
1514
key.bodyoffset: 17,
@@ -121,7 +120,6 @@
121120
key.name: "Foo2",
122121
key.offset: 189,
123122
key.length: 13,
124-
key.runtime_name: "_TtC4main4Foo2",
125123
key.nameoffset: 195,
126124
key.namelength: 4,
127125
key.bodyoffset: 201,
@@ -140,7 +138,6 @@
140138
key.name: "Foo3",
141139
key.offset: 204,
142140
key.length: 108,
143-
key.runtime_name: "_TtC4main4Foo3",
144141
key.nameoffset: 210,
145142
key.namelength: 4,
146143
key.bodyoffset: 216,
@@ -190,7 +187,6 @@
190187
key.name: "MyProt",
191188
key.offset: 314,
192189
key.length: 18,
193-
key.runtime_name: "_TtP4main6MyProt_",
194190
key.nameoffset: 323,
195191
key.namelength: 6,
196192
key.bodyoffset: 331,
@@ -202,7 +198,6 @@
202198
key.name: "OuterCls",
203199
key.offset: 334,
204200
key.length: 41,
205-
key.runtime_name: "_TtC4main8OuterCls",
206201
key.nameoffset: 340,
207202
key.namelength: 8,
208203
key.bodyoffset: 350,
@@ -278,7 +273,6 @@
278273
key.name: "TestParamAndCall",
279274
key.offset: 449,
280275
key.length: 212,
281-
key.runtime_name: "_TtC4main16TestParamAndCall",
282276
key.nameoffset: 455,
283277
key.namelength: 16,
284278
key.bodyoffset: 473,
@@ -419,7 +413,6 @@
419413
key.name: "TestMarkers",
420414
key.offset: 684,
421415
key.length: 206,
422-
key.runtime_name: "_TtC4main11TestMarkers",
423416
key.nameoffset: 690,
424417
key.namelength: 11,
425418
key.bodyoffset: 703,
@@ -918,7 +911,6 @@
918911
key.name: "ClassObjcAttr",
919912
key.offset: 1412,
920913
key.length: 60,
921-
key.runtime_name: "_TtC4main13ClassObjcAttr",
922914
key.nameoffset: 1418,
923915
key.namelength: 13,
924916
key.bodyoffset: 1444,
@@ -1020,7 +1012,6 @@
10201012
key.name: "FooProtocol",
10211013
key.offset: 1554,
10221014
key.length: 81,
1023-
key.runtime_name: "_TtP4main11FooProtocol_",
10241015
key.nameoffset: 1563,
10251016
key.namelength: 11,
10261017
key.bodyoffset: 1576,
@@ -1147,7 +1138,6 @@
11471138
key.name: "C",
11481139
key.offset: 1790,
11491140
key.length: 119,
1150-
key.runtime_name: "_TtC4main1C",
11511141
key.nameoffset: 1796,
11521142
key.namelength: 1,
11531143
key.bodyoffset: 1799,
@@ -1342,7 +1332,6 @@
13421332
key.name: "OneMore",
13431333
key.offset: 2137,
13441334
key.length: 121,
1345-
key.runtime_name: "_TtC4main7OneMore",
13461335
key.nameoffset: 2143,
13471336
key.namelength: 7,
13481337
key.bodyoffset: 2152,
@@ -1615,6 +1604,25 @@
16151604
]
16161605
}
16171606
]
1607+
},
1608+
{
1609+
key.kind: source.lang.swift.decl.protocol,
1610+
key.accessibility: source.lang.swift.accessibility.internal,
1611+
key.name: "BarProtocol",
1612+
key.offset: 2606,
1613+
key.length: 23,
1614+
key.runtime_name: "FPBarProto",
1615+
key.nameoffset: 2615,
1616+
key.namelength: 11,
1617+
key.bodyoffset: 2628,
1618+
key.bodylength: 0,
1619+
key.attributes: [
1620+
{
1621+
key.offset: 2588,
1622+
key.length: 17,
1623+
key.attribute: source.decl.attribute.objc.name
1624+
}
1625+
]
16181626
}
16191627
],
16201628
key.diagnostics: [

test/SourceKit/DocumentStructure/structure.swift.foobar.response

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
key.offset: 0,
3-
key.length: 2587,
3+
key.length: 2630,
44
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
55
key.substructure: [
66
{
@@ -9,7 +9,6 @@
99
key.name: "Foo",
1010
key.offset: 0,
1111
key.length: 173,
12-
key.runtime_name: "_TtC4main3Foo",
1312
key.nameoffset: 6,
1413
key.namelength: 3,
1514
key.bodyoffset: 17,
@@ -121,7 +120,6 @@
121120
key.name: "Foo2",
122121
key.offset: 189,
123122
key.length: 13,
124-
key.runtime_name: "_TtC4main4Foo2",
125123
key.nameoffset: 195,
126124
key.namelength: 4,
127125
key.bodyoffset: 201,
@@ -140,7 +138,6 @@
140138
key.name: "Foo3",
141139
key.offset: 204,
142140
key.length: 108,
143-
key.runtime_name: "_TtC4main4Foo3",
144141
key.nameoffset: 210,
145142
key.namelength: 4,
146143
key.bodyoffset: 216,
@@ -190,7 +187,6 @@
190187
key.name: "MyProt",
191188
key.offset: 314,
192189
key.length: 18,
193-
key.runtime_name: "_TtP4main6MyProt_",
194190
key.nameoffset: 323,
195191
key.namelength: 6,
196192
key.bodyoffset: 331,
@@ -202,7 +198,6 @@
202198
key.name: "OuterCls",
203199
key.offset: 334,
204200
key.length: 41,
205-
key.runtime_name: "_TtC4main8OuterCls",
206201
key.nameoffset: 340,
207202
key.namelength: 8,
208203
key.bodyoffset: 350,
@@ -278,7 +273,6 @@
278273
key.name: "TestParamAndCall",
279274
key.offset: 449,
280275
key.length: 212,
281-
key.runtime_name: "_TtC4main16TestParamAndCall",
282276
key.nameoffset: 455,
283277
key.namelength: 16,
284278
key.bodyoffset: 473,
@@ -419,7 +413,6 @@
419413
key.name: "TestMarkers",
420414
key.offset: 684,
421415
key.length: 206,
422-
key.runtime_name: "_TtC4main11TestMarkers",
423416
key.nameoffset: 690,
424417
key.namelength: 11,
425418
key.bodyoffset: 703,
@@ -918,7 +911,6 @@
918911
key.name: "ClassObjcAttr",
919912
key.offset: 1412,
920913
key.length: 60,
921-
key.runtime_name: "_TtC4main13ClassObjcAttr",
922914
key.nameoffset: 1418,
923915
key.namelength: 13,
924916
key.bodyoffset: 1444,
@@ -1020,7 +1012,6 @@
10201012
key.name: "FooProtocol",
10211013
key.offset: 1554,
10221014
key.length: 81,
1023-
key.runtime_name: "_TtP4main11FooProtocol_",
10241015
key.nameoffset: 1563,
10251016
key.namelength: 11,
10261017
key.bodyoffset: 1576,
@@ -1147,7 +1138,6 @@
11471138
key.name: "C",
11481139
key.offset: 1790,
11491140
key.length: 119,
1150-
key.runtime_name: "_TtC4main1C",
11511141
key.nameoffset: 1796,
11521142
key.namelength: 1,
11531143
key.bodyoffset: 1799,
@@ -1342,7 +1332,6 @@
13421332
key.name: "OneMore",
13431333
key.offset: 2137,
13441334
key.length: 121,
1345-
key.runtime_name: "_TtC4main7OneMore",
13461335
key.nameoffset: 2143,
13471336
key.namelength: 7,
13481337
key.bodyoffset: 2152,
@@ -1615,6 +1604,25 @@
16151604
]
16161605
}
16171606
]
1607+
},
1608+
{
1609+
key.kind: source.lang.swift.decl.protocol,
1610+
key.accessibility: source.lang.swift.accessibility.internal,
1611+
key.name: "BarProtocol",
1612+
key.offset: 2606,
1613+
key.length: 23,
1614+
key.runtime_name: "FPBarProto",
1615+
key.nameoffset: 2615,
1616+
key.namelength: 11,
1617+
key.bodyoffset: 2628,
1618+
key.bodylength: 0,
1619+
key.attributes: [
1620+
{
1621+
key.offset: 2588,
1622+
key.length: 17,
1623+
key.attribute: source.decl.attribute.objc.name
1624+
}
1625+
]
16181626
}
16191627
],
16201628
key.diagnostics: [

test/SourceKit/DocumentStructure/structure.swift.placeholders.response

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
key.name: "<#MyCls#>",
1010
key.offset: 0,
1111
key.length: 35,
12-
key.runtime_name: "_TtC4main9<#MyCls#>",
1312
key.nameoffset: 6,
1413
key.namelength: 9,
1514
key.bodyoffset: 34,

0 commit comments

Comments
 (0)