Skip to content

Commit 761d651

Browse files
committed
SourceKit: switch to new mangling in ide::printDeclTypeUSR
This was still missing.
1 parent edb1cb6 commit 761d651

File tree

7 files changed

+30
-20
lines changed

7 files changed

+30
-20
lines changed

include/swift/AST/ASTMangler.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ class ASTMangler : public Mangler {
110110
ModuleDecl *Module);
111111

112112
std::string mangleTypeForDebugger(Type decl, const DeclContext *DC);
113-
113+
114+
std::string mangleDeclType(const ValueDecl *decl);
115+
114116
std::string mangleObjCRuntimeName(const NominalTypeDecl *Nominal);
115117

116118
std::string mangleTypeAsUSR(Type type) {

lib/AST/ASTMangler.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,15 @@ std::string ASTMangler::mangleTypeForDebugger(Type Ty, const DeclContext *DC) {
273273
return finalize();
274274
}
275275

276+
std::string ASTMangler::mangleDeclType(const ValueDecl *decl) {
277+
DWARFMangling = true;
278+
beginMangling();
279+
280+
appendDeclType(decl);
281+
appendOperator("D");
282+
return finalize();
283+
}
284+
276285
static bool isPrivate(const NominalTypeDecl *Nominal) {
277286
return Nominal->hasAccessibility() &&
278287
Nominal->getFormalAccess() <= Accessibility::FilePrivate;

lib/AST/USRGeneration.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ bool ide::printTypeUSR(Type Ty, raw_ostream &OS) {
3939
}
4040

4141
bool ide::printDeclTypeUSR(const ValueDecl *D, raw_ostream &OS) {
42-
using namespace Mangle;
43-
Mangler Mangler(true);
44-
Mangler.mangleDeclTypeForDebugger(D);
45-
Mangler.finalize(OS);
42+
NewMangling::ASTMangler Mangler;
43+
std::string MangledName = Mangler.mangleDeclType(D);
44+
OS << MangledName;
4645
return false;
4746
}
4847

test/SourceKit/CursorInfo/cursor_info.swift

+12-12
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func hasLocalizationKey2() {}
228228
// CHECK2-NEXT: +
229229
// CHECK2-NEXT: s:s1poiS2i_SitF
230230
// CHECK2-NEXT: (Int, Int) -> Int{{$}}
231-
// CHECK2-NEXT: _TtFTSiSi_Si
231+
// CHECK2-NEXT: _T0S2i_SitcD
232232
// CHECK2-NEXT: Swift{{$}}
233233
// CHECK2-NEXT: <Group>Math/Integers</Group>
234234
// CHECK2-NEXT: SYSTEM
@@ -240,7 +240,7 @@ func hasLocalizationKey2() {}
240240
// CHECK3-NEXT: x{{$}}
241241
// CHECK3-NEXT: s:11cursor_info3gooySiF1xL_Siv{{$}}
242242
// CHECK3-NEXT: Int{{$}}
243-
// CHECK3-NEXT: _TtSi
243+
// CHECK3-NEXT: _T0SiD
244244
// CHECK3-NEXT: <Declaration>let x: <Type usr="s:Si">Int</Type></Declaration>
245245
// CHECK3-NEXT: <decl.var.parameter><syntaxtype.keyword>let</syntaxtype.keyword> <decl.var.parameter.name>x</decl.var.parameter.name>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>
246246

@@ -249,7 +249,7 @@ func hasLocalizationKey2() {}
249249
// CHECK4-NEXT: fooIntVar{{$}}
250250
// CHECK4-NEXT: c:@fooIntVar{{$}}
251251
// CHECK4-NEXT: Int32{{$}}
252-
// CHECK4-NEXT: _TtVs5Int32
252+
// CHECK4-NEXT: _T0s5Int32VD
253253
// CHECK4-NEXT: Foo{{$}}
254254
// CHECK4-NEXT: <Declaration>var fooIntVar: <Type usr="s:s5Int32V">Int32</Type></Declaration>
255255
// CHECK4-NEXT: <decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>fooIntVar</decl.name>: <decl.var.type><ref.struct usr="s:s5Int32V">Int32</ref.struct></decl.var.type></decl.var.global>
@@ -266,7 +266,7 @@ func hasLocalizationKey2() {}
266266
// CHECK6-NEXT: fooSwiftFunc
267267
// CHECK6-NEXT: s:14FooSwiftModule03fooB4FuncSiyF
268268
// CHECK6-NEXT: () -> Int
269-
// CHECK6-NEXT: _TtFT_Si
269+
// CHECK6-NEXT: _T0SiycD
270270
// CHECK6-NEXT: FooSwiftModule
271271
// CHECK6-NEXT: <Declaration>func fooSwiftFunc() -&gt; <Type usr="s:Si">Int</Type></Declaration>
272272
// CHECK6-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>fooSwiftFunc</decl.name>() -&gt; <decl.function.returntype><ref.struct usr="s:Si">Int</ref.struct></decl.function.returntype></decl.function.free>
@@ -277,7 +277,7 @@ func hasLocalizationKey2() {}
277277
// CHECK7-NEXT: S1
278278
// CHECK7-NEXT: s:11cursor_info2S1V
279279
// CHECK7-NEXT: S1.Type
280-
// CHECK7-NEXT: _Tt
280+
// CHECK7-NEXT: _T0
281281
// CHECK7-NEXT: <Declaration>struct S1</Declaration>
282282
// CHECK7-NEXT: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>S1</decl.name></decl.struct>
283283
// CHECK7-NEXT: <Class file="{{[^"]+}}cursor_info.swift" line="13" column="8"><Name>S1</Name><USR>s:11cursor_info2S1V</USR><Declaration>struct S1</Declaration><Abstract><Para>Aaa. S1. Bbb.</Para></Abstract></Class>
@@ -287,7 +287,7 @@ func hasLocalizationKey2() {}
287287
// CHECK8-NEXT: init
288288
// CHECK8-NEXT: s:11cursor_info2CCCACSi1x_tcfc
289289
// CHECK8-NEXT: (CC.Type) -> (Int) -> CC
290-
// CHECK8-NEXT: _TtFT1xSi_C11cursor_info2CC
290+
// CHECK8-NEXT: _T011cursor_info2CCCSi1x_tcD
291291
// CHECK8-NEXT: <Container>_T011cursor_info2CCCD</Container>
292292
// CHECK8-NEXT: <Declaration>convenience init(x: <Type usr="s:Si">Int</Type>)</Declaration>
293293
// CHECK8-NEXT: <decl.function.constructor><syntaxtype.keyword>convenience</syntaxtype.keyword> <syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>
@@ -393,7 +393,7 @@ func hasLocalizationKey2() {}
393393
// CHECK29-NEXT: deinit
394394
// CHECK29-NEXT: s:11cursor_info2C3Cfd
395395
// CHECK29-NEXT: (C3) -> ()
396-
// CHECK29-NEXT: _TtFT_T_
396+
// CHECK29-NEXT: _T0yycD
397397
// CHECK29-NEXT: <Declaration>deinit</Declaration>
398398
// CHECK29-NEXT: <decl.function.destructor><syntaxtype.keyword>deinit</syntaxtype.keyword></decl.function.destructor>
399399

@@ -402,7 +402,7 @@ func hasLocalizationKey2() {}
402402
// CHECK30-NEXT: init(x:)
403403
// CHECK30-NEXT: s:11cursor_info2C3CSQyACGSi1x_tcfc
404404
// CHECK30-NEXT: (C3.Type) -> (Int) -> C3!
405-
// CHECK30-NEXT: _TtFT1xSi_GSQC11cursor_info2C3_
405+
// CHECK30-NEXT: _T0SQy11cursor_info2C3CGSi1x_tcD
406406
// CHECK30-NEXT: <Declaration>init!(x: <Type usr="s:Si">Int</Type>)</Declaration>
407407
// CHECK30-NEXT: <decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>!(<decl.var.parameter><decl.var.parameter.argument_label>x</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>
408408

@@ -411,7 +411,7 @@ func hasLocalizationKey2() {}
411411
// CHECK31-NEXT: init(y:)
412412
// CHECK31-NEXT: s:11cursor_info2C3CACSgSi1y_tcfc
413413
// CHECK31-NEXT: (C3.Type) -> (Int) -> C3?
414-
// CHECK31-NEXT: _TtFT1ySi_GSqC11cursor_info2C3_
414+
// CHECK31-NEXT: _T011cursor_info2C3CSgSi1y_tcD
415415
// CHECK31-NEXT: <Declaration>init?(y: <Type usr="s:Si">Int</Type>)</Declaration>
416416
// CHECK31-NEXT: <decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>?(<decl.var.parameter><decl.var.parameter.argument_label>y</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>)</decl.function.constructor>
417417

@@ -420,7 +420,7 @@ func hasLocalizationKey2() {}
420420
// CHECK32-NEXT: init(z:)
421421
// CHECK32-NEXT: s:11cursor_info2C3CACSi1z_tKcfc
422422
// CHECK32-NEXT: (C3.Type) -> (Int) throws -> C3
423-
// CHECK32-NEXT: _TtFzT1zSi_C11cursor_info2C3
423+
// CHECK32-NEXT: _T011cursor_info2C3CSi1z_tKcD
424424
// CHECK32-NEXT: <Declaration>init(z: <Type usr="s:Si">Int</Type>) throws</Declaration>
425425
// CHECK32-NEXT: <decl.function.constructor><syntaxtype.keyword>init</syntaxtype.keyword>(<decl.var.parameter><decl.var.parameter.argument_label>z</decl.var.parameter.argument_label>: <decl.var.parameter.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.parameter.type></decl.var.parameter>) <syntaxtype.keyword>throws</syntaxtype.keyword></decl.function.constructor>
426426

@@ -716,7 +716,7 @@ func hasLocalizationKey2() {}
716716
// CHECK87-NEXT: HasLocalizationKey
717717
// CHECK87-NEXT: s:11cursor_info18HasLocalizationKeyV
718718
// CHECK87-NEXT: HasLocalizationKey.Type
719-
// CHECK87-NEXT: _Tt
719+
// CHECK87-NEXT: _T0
720720
// CHECK87-NEXT: <Declaration>struct HasLocalizationKey</Declaration>
721721
// CHECK87-NEXT: <decl.struct><syntaxtype.keyword>struct</syntaxtype.keyword> <decl.name>HasLocalizationKey</decl.name></decl.struct>
722722
// CHECK87-NEXT: <Class file="{{[^"]+}}cursor_info.swift" line="212" column="8"><Name>HasLocalizationKey</Name><USR>s:11cursor_info18HasLocalizationKeyV</USR><Declaration>struct HasLocalizationKey</Declaration><Abstract><Para>Brief.</Para></Abstract></Class>
@@ -727,7 +727,7 @@ func hasLocalizationKey2() {}
727727
// CHECK88-NEXT: hasLocalizationKey2
728728
// CHECK88-NEXT: s:11cursor_info19hasLocalizationKey2yyF
729729
// CHECK88-NEXT: () -> ()
730-
// CHECK88-NEXT: _Tt
730+
// CHECK88-NEXT: _T0
731731
// CHECK88-NEXT: <Declaration>func hasLocalizationKey2()</Declaration>
732732
// CHECK88-NEXT: <decl.function.free><syntaxtype.keyword>func</syntaxtype.keyword> <decl.name>hasLocalizationKey2</decl.name>()</decl.function.free>
733733
// CHECK88-NEXT: <Function file="{{[^"]+}}cursor_info.swift" line="215" column="6"><Name>hasLocalizationKey2()</Name><USR>s:11cursor_info19hasLocalizationKey2yyF</USR><Declaration>func hasLocalizationKey2()</Declaration></Function

test/SourceKit/CursorInfo/cursor_stdlib.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func foo3(a: Float, b: Bool) {}
2626
// CHECK-OVERLAY-NEXT: NSUTF8StringEncoding
2727
// CHECK-OVERLAY-NEXT: s:10Foundation20NSUTF8StringEncodingSuv
2828
// CHECK-OVERLAY-NEXT: UInt
29-
// CHECK-OVERLAY-NEXT: _TtSu
29+
// CHECK-OVERLAY-NEXT: _T0SuD
3030
// CHECK-OVERLAY-NEXT: <Declaration>public let NSUTF8StringEncoding: <Type usr="s:Su">UInt</Type></Declaration>
3131

3232
// RUN: %sourcekitd-test -req=cursor -pos=5:13 %s -- %s %mcp_opt %clang-importer-sdk | %FileCheck -check-prefix=CHECK-ITERATOR %s

test/SourceKit/CursorInfo/cursor_usr.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func foo(x: FooStruct1) -> S1 {}
2222
// CHECK_SANITY1-NEXT: global
2323
// CHECK_SANITY1-NEXT: s:10cursor_usr6globalSiv
2424
// CHECK_SANITY1-NEXT: Int
25-
// CHECK_SANITY1-NEXT: _TtSi
25+
// CHECK_SANITY1-NEXT: _T0SiD
2626
// CHECK_SANITY1-NEXT: <Declaration>var global: <Type usr="s:Si">Int</Type></Declaration>
2727
// CHECK_SANITY1-NEXT: <decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>global</decl.name>: <decl.var.type><ref.struct usr="s:Si">Int</ref.struct></decl.var.type></decl.var.global>
2828

test/SourceKit/InterfaceGen/gen_stdlib.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var x: Int
3333
// CHECK1-NEXT: Int
3434
// CHECK1-NEXT: s:Si
3535
// CHECK1-NEXT: Int.Type
36-
// CHECK1-NEXT: _Tt
36+
// CHECK1-NEXT: _T0
3737
// CHECK1-NEXT: Swift{{$}}
3838
// CHECK1-NEXT: <Group>Math/Integers</Group>
3939
// CHECK1-NEXT: /<interface-gen>{{$}}

0 commit comments

Comments
 (0)