diff --git a/lib/AST/ASTPrinter.cpp b/lib/AST/ASTPrinter.cpp index 50cfdafb2bc60..0829b795dca1d 100644 --- a/lib/AST/ASTPrinter.cpp +++ b/lib/AST/ASTPrinter.cpp @@ -1751,15 +1751,15 @@ static void printExtendedTypeName(Type ExtendedType, ASTPrinter &Printer, PrintOptions Options) { auto Nominal = ExtendedType->getAnyNominal(); assert(Nominal && "extension of non-nominal type"); - if (auto ct = ExtendedType->getAs()) { - if (auto ParentType = ct->getParent()) { - ParentType.print(Printer, Options); - Printer << "."; - } - } - if (auto st = ExtendedType->getAs()) { - if (auto ParentType = st->getParent()) { - ParentType.print(Printer, Options); + if (auto nt = ExtendedType->getAs()) { + if (auto ParentType = nt->getParent()) { + if (auto *PD = ParentType->getNominalOrBoundGenericNominal()) { + // Avoid using the parent type directly because it can be bound + // generic type and sugared. + PD->getDeclaredType().print(Printer, Options); + } else { + ParentType.print(Printer, Options); + } Printer << "."; } } diff --git a/test/SourceKit/DocSupport/Inputs/cake1.swift b/test/SourceKit/DocSupport/Inputs/cake1.swift index 0b535099cd99b..1895342e351b9 100644 --- a/test/SourceKit/DocSupport/Inputs/cake1.swift +++ b/test/SourceKit/DocSupport/Inputs/cake1.swift @@ -25,3 +25,7 @@ public protocol P3 { public extension P2 where Self : P3 { func fooConstraint() {} } + +public extension Dictionary.Keys { + public func foo() {} +} diff --git a/test/SourceKit/DocSupport/doc_swift_module.swift.response b/test/SourceKit/DocSupport/doc_swift_module.swift.response index 485af2dfaecfc..1f255baff9e10 100644 --- a/test/SourceKit/DocSupport/doc_swift_module.swift.response +++ b/test/SourceKit/DocSupport/doc_swift_module.swift.response @@ -34,7 +34,7 @@ extension C1 : P4 { } } -extension C1Cases { +extension cake.C1.C1Cases { static func != (_ lhs: C1.C1Cases, _ rhs: C1.C1Cases) -> Bool } @@ -140,7 +140,7 @@ struct S1 { } } -extension SE { +extension cake.S1.SE { static func != (_ lhs: S1.SE, _ rhs: S1.SE) -> Bool } @@ -455,1050 +455,1074 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.offset: 427, key.length: 9 }, + { + key.kind: source.lang.swift.syntaxtype.typeidentifier, + key.offset: 437, + key.length: 4 + }, + { + key.kind: source.lang.swift.ref.class, + key.name: "C1", + key.usr: "s:4cake2C1C", + key.offset: 442, + key.length: 2 + }, { key.kind: source.lang.swift.ref.enum, key.name: "C1Cases", key.usr: "s:4cake2C1C0B5CasesO", - key.offset: 437, + key.offset: 445, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 452, + key.offset: 460, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 459, + key.offset: 467, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 468, + key.offset: 476, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 470, + key.offset: 478, key.length: 3 }, { key.kind: source.lang.swift.ref.class, key.name: "C1", key.usr: "s:4cake2C1C", - key.offset: 475, + key.offset: 483, key.length: 2 }, { key.kind: source.lang.swift.ref.enum, key.name: "C1Cases", key.usr: "s:4cake2C1C0B5CasesO", - key.offset: 478, + key.offset: 486, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 487, + key.offset: 495, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 489, + key.offset: 497, key.length: 3 }, { key.kind: source.lang.swift.ref.class, key.name: "C1", key.usr: "s:4cake2C1C", - key.offset: 494, + key.offset: 502, key.length: 2 }, { key.kind: source.lang.swift.ref.enum, key.name: "C1Cases", key.usr: "s:4cake2C1C0B5CasesO", - key.offset: 497, + key.offset: 505, key.length: 7 }, { key.kind: source.lang.swift.ref.struct, key.name: "Bool", key.usr: "s:Sb", - key.offset: 509, + key.offset: 517, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 517, + key.offset: 525, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 523, + key.offset: 531, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 528, + key.offset: 536, key.length: 4 }, { key.kind: source.lang.swift.ref.class, key.name: "C1", key.usr: "s:4cake2C1C", - key.offset: 533, + key.offset: 541, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 543, + key.offset: 551, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 548, + key.offset: 556, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 561, + key.offset: 569, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 566, + key.offset: 574, key.length: 7 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 576, + key.offset: 584, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 591, + key.offset: 599, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 596, + key.offset: 604, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 613, + key.offset: 621, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 618, + key.offset: 626, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 632, + key.offset: 640, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 637, + key.offset: 645, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 649, + key.offset: 657, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 659, + key.offset: 667, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 661, + key.offset: 669, key.length: 5 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 668, + key.offset: 676, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 676, + key.offset: 684, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 682, + key.offset: 690, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 691, + key.offset: 699, key.length: 9 }, { key.kind: source.lang.swift.ref.class, key.name: "C2", key.usr: "s:4cake2C2C", - key.offset: 701, + key.offset: 709, key.length: 2 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P4", key.usr: "s:4cake2P4P", - key.offset: 706, + key.offset: 714, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 716, + key.offset: 724, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 721, + key.offset: 729, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 734, + key.offset: 742, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 741, + key.offset: 749, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 757, + key.offset: 765, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 762, + key.offset: 770, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 770, + key.offset: 778, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 772, + key.offset: 780, key.length: 1 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P4", key.usr: "s:4cake2P4P", - key.offset: 775, + key.offset: 783, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 788, + key.offset: 796, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 793, + key.offset: 801, key.length: 6 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 802, + key.offset: 810, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 813, + key.offset: 821, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 818, + key.offset: 826, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 828, + key.offset: 836, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 835, + key.offset: 843, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 844, + key.offset: 852, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 846, + key.offset: 854, key.length: 3 }, { key.kind: source.lang.swift.ref.enum, key.name: "MyEnum", key.usr: "s:4cake6MyEnumO", - key.offset: 851, + key.offset: 859, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 859, + key.offset: 867, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 861, + key.offset: 869, key.length: 3 }, { key.kind: source.lang.swift.ref.enum, key.name: "MyEnum", key.usr: "s:4cake6MyEnumO", - key.offset: 866, + key.offset: 874, key.length: 6 }, { key.kind: source.lang.swift.ref.struct, key.name: "Bool", key.usr: "s:Sb", - key.offset: 877, + key.offset: 885, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.attribute.builtin, - key.offset: 885, + key.offset: 893, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 891, + key.offset: 899, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 900, + key.offset: 908, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.attribute.builtin, - key.offset: 910, + key.offset: 918, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.attribute.builtin, - key.offset: 916, + key.offset: 924, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 925, + key.offset: 933, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 930, + key.offset: 938, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 940, + key.offset: 948, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 949, + key.offset: 957, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 959, + key.offset: 967, key.length: 14 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 974, + key.offset: 982, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 979, + key.offset: 987, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 988, + key.offset: 996, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 996, + key.offset: 1004, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1005, + key.offset: 1013, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1015, + key.offset: 1023, key.length: 14 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1030, + key.offset: 1038, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1041, + key.offset: 1049, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1050, + key.offset: 1058, key.length: 2 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P5", key.usr: "s:4cake2P5P", - key.offset: 1055, + key.offset: 1063, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1063, + key.offset: 1071, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P6", key.usr: "s:4cake2P6P", - key.offset: 1073, + key.offset: 1081, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1083, + key.offset: 1091, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1087, + key.offset: 1095, key.length: 4 }, { key.kind: source.lang.swift.ref.generic_type_param, key.name: "Self", key.usr: "s:4cake2P6P4Selfxmfp", - key.offset: 1093, + key.offset: 1101, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1098, + key.offset: 1106, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1109, + key.offset: 1117, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1118, + key.offset: 1126, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1127, + key.offset: 1135, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1139, + key.offset: 1147, key.length: 14 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1154, + key.offset: 1162, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1167, + key.offset: 1175, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1171, + key.offset: 1179, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 1174, + key.offset: 1182, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1180, + key.offset: 1188, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1191, + key.offset: 1199, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1196, + key.offset: 1204, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1207, + key.offset: 1215, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1212, + key.offset: 1220, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1222, + key.offset: 1230, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "Prot", key.usr: "s:4cake4ProtP", - key.offset: 1232, + key.offset: 1240, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1244, + key.offset: 1252, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1249, + key.offset: 1257, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1261, + key.offset: 1269, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 1271, + key.offset: 1279, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 1273, + key.offset: 1281, key.length: 5 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 1280, + key.offset: 1288, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 1288, + key.offset: 1296, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1294, + key.offset: 1302, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1303, + key.offset: 1311, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "Prot", key.usr: "s:4cake4ProtP", - key.offset: 1313, + key.offset: 1321, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1318, + key.offset: 1326, key.length: 5 }, { key.kind: source.lang.swift.ref.generic_type_param, key.name: "Self", key.usr: "s:4cake4ProtPAASi7ElementRtzrlE4Selfxmfp", - key.offset: 1324, + key.offset: 1332, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1329, + key.offset: 1337, key.length: 7 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 1340, + key.offset: 1348, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1351, + key.offset: 1359, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1356, + key.offset: 1364, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1368, + key.offset: 1376, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1375, + key.offset: 1383, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1385, + key.offset: 1393, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1390, + key.offset: 1398, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1404, + key.offset: 1412, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1409, + key.offset: 1417, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1420, + key.offset: 1428, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1425, + key.offset: 1433, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1436, + key.offset: 1444, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1441, + key.offset: 1449, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1454, + key.offset: 1462, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1459, + key.offset: 1467, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1471, + key.offset: 1479, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1478, + key.offset: 1486, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1492, + key.offset: 1500, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1496, + key.offset: 1504, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 1499, + key.offset: 1507, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1512, + key.offset: 1520, key.length: 9 }, + { + key.kind: source.lang.swift.syntaxtype.typeidentifier, + key.offset: 1530, + key.length: 4 + }, + { + key.kind: source.lang.swift.ref.struct, + key.name: "S1", + key.usr: "s:4cake2S1V", + key.offset: 1535, + key.length: 2 + }, { key.kind: source.lang.swift.ref.enum, key.name: "SE", key.usr: "s:4cake2S1V2SEO", - key.offset: 1522, + key.offset: 1538, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1532, + key.offset: 1548, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1539, + key.offset: 1555, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 1548, + key.offset: 1564, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 1550, + key.offset: 1566, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "S1", key.usr: "s:4cake2S1V", - key.offset: 1555, + key.offset: 1571, key.length: 2 }, { key.kind: source.lang.swift.ref.enum, key.name: "SE", key.usr: "s:4cake2S1V2SEO", - key.offset: 1558, + key.offset: 1574, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 1562, + key.offset: 1578, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 1564, + key.offset: 1580, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "S1", key.usr: "s:4cake2S1V", - key.offset: 1569, + key.offset: 1585, key.length: 2 }, { key.kind: source.lang.swift.ref.enum, key.name: "SE", key.usr: "s:4cake2S1V2SEO", - key.offset: 1572, + key.offset: 1588, key.length: 2 }, { key.kind: source.lang.swift.ref.struct, key.name: "Bool", key.usr: "s:Sb", - key.offset: 1579, + key.offset: 1595, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1587, + key.offset: 1603, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1594, + key.offset: 1610, key.length: 2 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P3", key.usr: "s:4cake2P3P", - key.offset: 1599, + key.offset: 1615, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1609, + key.offset: 1625, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1619, + key.offset: 1635, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1623, + key.offset: 1639, key.length: 4 }, { key.kind: source.lang.swift.ref.struct, key.name: "S2", key.usr: "s:4cake2S2V", - key.offset: 1628, + key.offset: 1644, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1634, + key.offset: 1650, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1641, + key.offset: 1657, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1644, + key.offset: 1660, key.length: 7 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P5", key.usr: "s:4cake2P5P", - key.offset: 1655, + key.offset: 1671, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1658, + key.offset: 1674, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1664, + key.offset: 1680, key.length: 7 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P5", key.usr: "s:4cake2P5P", - key.offset: 1674, + key.offset: 1690, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1684, + key.offset: 1700, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1694, + key.offset: 1710, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1704, + key.offset: 1720, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1712, + key.offset: 1728, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1723, + key.offset: 1739, key.length: 9 }, { key.kind: source.lang.swift.ref.struct, key.name: "S3", key.usr: "s:4cake2S3V", - key.offset: 1733, + key.offset: 1749, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1743, + key.offset: 1759, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1747, + key.offset: 1763, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1753, + key.offset: 1769, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1761, + key.offset: 1777, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1772, + key.offset: 1788, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1781, + key.offset: 1797, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1786, + key.offset: 1802, key.length: 6 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1793, + key.offset: 1809, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 1797, + key.offset: 1813, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 1801, + key.offset: 1817, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 1803, + key.offset: 1819, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1807, + key.offset: 1823, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 1811, + key.offset: 1827, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 1813, + key.offset: 1829, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1817, + key.offset: 1833, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 1821, + key.offset: 1837, key.length: 5 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1827, + key.offset: 1843, key.length: 2 }, { key.kind: source.lang.swift.ref.protocol, key.name: "Prot", key.usr: "s:4cake4ProtP", - key.offset: 1832, + key.offset: 1848, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1838, + key.offset: 1854, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1843, + key.offset: 1859, key.length: 4 }, { key.kind: source.lang.swift.ref.class, key.name: "C1", key.usr: "s:4cake2C1C", - key.offset: 1848, + key.offset: 1864, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1852, + key.offset: 1868, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1855, + key.offset: 1871, key.length: 7 }, { key.kind: source.lang.swift.syntaxtype.typeidentifier, - key.offset: 1866, + key.offset: 1882, key.length: 4 }, { key.kind: source.lang.swift.ref.class, key.name: "C1", key.usr: "s:4cake2C1C", - key.offset: 1871, + key.offset: 1887, key.length: 2 }, { key.kind: source.lang.swift.ref.typealias, key.name: "Element", key.usr: "s:4cake2C1C7Elementa", - key.offset: 1874, + key.offset: 1890, key.length: 7 } ] @@ -1727,7 +1751,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen { key.kind: source.lang.swift.decl.extension.enum, key.offset: 427, - key.length: 88, + key.length: 96, key.extends: { key.kind: source.lang.swift.ref.enum, key.name: "C1Cases", @@ -1740,7 +1764,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.usr: "s:s9EquatablePsE2neoiSbx_xtFZ::SYNTHESIZED::s:4cake2C1C0B5CasesO", key.original_usr: "s:s9EquatablePsE2neoiSbx_xtFZ", key.doc.full_as_xml: "!=(_:_:)s:s9EquatablePsE2neoiSbx_xtFZstatic func != (lhs: Self, rhs: Self) -> BoolReturns a Boolean value indicating whether two values are not equal.lhsinA value to compare.rhsinAnother value to compare.Inequality is the inverse of equality. For any values a and b, a != b implies that a == b is false.This is the default implementation of the not-equal-to operator (!=) for any type that conforms to Equatable.", - key.offset: 452, + key.offset: 460, key.length: 61, key.fully_annotated_decl: "@_inlineable static func != (lhs: C1.C1Cases, rhs: C1.C1Cases) -> Bool", key.entities: [ @@ -1748,14 +1772,14 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "lhs", - key.offset: 475, + key.offset: 483, key.length: 10 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "rhs", - key.offset: 494, + key.offset: 502, key.length: 10 } ] @@ -1766,7 +1790,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.class, key.name: "C2", key.usr: "s:4cake2C2C", - key.offset: 517, + key.offset: 525, key.length: 172, key.fully_annotated_decl: "class C2 : C1", key.inherits: [ @@ -1781,7 +1805,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "C2foo()", key.usr: "s:4cake2C2C5C2fooyyF", - key.offset: 543, + key.offset: 551, key.length: 12, key.fully_annotated_decl: "func C2foo()" }, @@ -1790,7 +1814,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "C1Cases", key.usr: "s:4cake2C1C0B5CasesO::SYNTHESIZED::s:4cake2C2C", key.original_usr: "s:4cake2C1C0B5CasesO", - key.offset: 561, + key.offset: 569, key.length: 46, key.fully_annotated_decl: "enum C1Cases : Int", key.inherits: [ @@ -1805,7 +1829,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enumelement, key.name: "case1", key.usr: "s:4cake2C1C0B5CasesO5case1A2EmF", - key.offset: 591, + key.offset: 599, key.length: 10, key.fully_annotated_decl: "case case1" } @@ -1816,7 +1840,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "extfoo()", key.usr: "s:4cake4ProtPAASi7ElementRtzrlE6extfooyyF::SYNTHESIZED::s:4cake2C2C", key.original_usr: "s:4cake4ProtPAASi7ElementRtzrlE6extfooyyF", - key.offset: 613, + key.offset: 621, key.length: 13, key.fully_annotated_decl: "func extfoo()" }, @@ -1825,7 +1849,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "foo1()", key.usr: "s:4cake4ProtPAAE4foo1yyF::SYNTHESIZED::s:4cake2C2C", key.original_usr: "s:4cake4ProtPAAE4foo1yyF", - key.offset: 632, + key.offset: 640, key.length: 11, key.fully_annotated_decl: "func foo1()" }, @@ -1834,7 +1858,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "subscript(_:)", key.usr: "s:4cake4ProtPAAES2icip::SYNTHESIZED::s:4cake2C2C", key.original_usr: "s:4cake4ProtPAAES2icip", - key.offset: 649, + key.offset: 657, key.length: 38, key.fully_annotated_decl: "subscript(index: Int) -> Int { get }", key.entities: [ @@ -1842,7 +1866,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "index", - key.offset: 668, + key.offset: 676, key.length: 3 } ] @@ -1851,7 +1875,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen }, { key.kind: source.lang.swift.decl.extension.class, - key.offset: 691, + key.offset: 699, key.length: 95, key.conforms: [ { @@ -1871,7 +1895,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "C1foo()", key.usr: "s:4cake2C1C5C1fooyyF::SYNTHESIZED::s:4cake2C2C", key.original_usr: "s:4cake2C1C5C1fooyyF", - key.offset: 716, + key.offset: 724, key.length: 12, key.fully_annotated_decl: "func C1foo()" }, @@ -1880,7 +1904,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "C1S1", key.usr: "s:4cake2C1C0B2S1V::SYNTHESIZED::s:4cake2C2C", key.original_usr: "s:4cake2C1C0B2S1V", - key.offset: 734, + key.offset: 742, key.length: 50, key.fully_annotated_decl: "struct C1S1", key.entities: [ @@ -1888,7 +1912,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "C1S1foo(a:)", key.usr: "s:4cake2C1C0B2S1V0B5S1fooyAA2P4_p1a_tF", - key.offset: 757, + key.offset: 765, key.length: 21, key.fully_annotated_decl: "func C1S1foo(a: P4)", key.entities: [ @@ -1896,7 +1920,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "a", key.name: "a", - key.offset: 775, + key.offset: 783, key.length: 2 } ] @@ -1909,7 +1933,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enum, key.name: "MyEnum", key.usr: "s:4cake6MyEnumO", - key.offset: 788, + key.offset: 796, key.length: 95, key.fully_annotated_decl: "enum MyEnum : Int", key.inherits: [ @@ -1924,7 +1948,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enumelement, key.name: "Blah", key.usr: "s:4cake6MyEnumO4BlahA2CmF", - key.offset: 813, + key.offset: 821, key.length: 9, key.fully_annotated_decl: "case Blah" }, @@ -1934,7 +1958,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.usr: "s:s9EquatablePsE2neoiSbx_xtFZ::SYNTHESIZED::s:4cake6MyEnumO", key.original_usr: "s:s9EquatablePsE2neoiSbx_xtFZ", key.doc.full_as_xml: "!=(_:_:)s:s9EquatablePsE2neoiSbx_xtFZstatic func != (lhs: Self, rhs: Self) -> BoolReturns a Boolean value indicating whether two values are not equal.lhsinA value to compare.rhsinAnother value to compare.Inequality is the inverse of equality. For any values a and b, a != b implies that a == b is false.This is the default implementation of the not-equal-to operator (!=) for any type that conforms to Equatable.", - key.offset: 828, + key.offset: 836, key.length: 53, key.fully_annotated_decl: "@_inlineable static func != (lhs: MyEnum, rhs: MyEnum) -> Bool", key.entities: [ @@ -1942,14 +1966,14 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "lhs", - key.offset: 851, + key.offset: 859, key.length: 6 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "rhs", - key.offset: 866, + key.offset: 874, key.length: 6 } ] @@ -1960,7 +1984,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.protocol, key.name: "P2", key.usr: "c:@M@cake@objc(pl)P2", - key.offset: 885, + key.offset: 893, key.length: 53, key.fully_annotated_decl: "@objc protocol P2", key.entities: [ @@ -1968,7 +1992,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo1()", key.usr: "c:@M@cake@objc(pl)P2(im)foo1", - key.offset: 910, + key.offset: 918, key.length: 26, key.fully_annotated_decl: "@objc optional func foo1()", key.is_optional: 1 @@ -1979,7 +2003,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.protocol, key.name: "P3", key.usr: "s:4cake2P3P", - key.offset: 940, + key.offset: 948, key.length: 37, key.fully_annotated_decl: "protocol P3", key.entities: [ @@ -1987,7 +2011,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.associatedtype, key.name: "T", key.usr: "s:4cake2P3P1T", - key.offset: 959, + key.offset: 967, key.length: 16, key.fully_annotated_decl: "associatedtype T" } @@ -1997,7 +2021,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.protocol, key.name: "P4", key.usr: "s:4cake2P4P", - key.offset: 979, + key.offset: 987, key.length: 15, key.fully_annotated_decl: "protocol P4" }, @@ -2005,7 +2029,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.protocol, key.name: "P5", key.usr: "s:4cake2P5P", - key.offset: 996, + key.offset: 1004, key.length: 43, key.fully_annotated_decl: "protocol P5", key.entities: [ @@ -2013,7 +2037,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.associatedtype, key.name: "Element", key.usr: "s:4cake2P5P7Element", - key.offset: 1015, + key.offset: 1023, key.length: 22, key.fully_annotated_decl: "associatedtype Element" } @@ -2023,7 +2047,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.protocol, key.name: "P6", key.usr: "s:4cake2P6P", - key.offset: 1041, + key.offset: 1049, key.length: 20, key.fully_annotated_decl: "protocol P6 : P5", key.conforms: [ @@ -2036,7 +2060,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen }, { key.kind: source.lang.swift.decl.extension.protocol, - key.offset: 1063, + key.offset: 1071, key.length: 53, key.extends: { key.kind: source.lang.swift.ref.protocol, @@ -2048,7 +2072,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.instance, key.name: "null", key.usr: "s:4cake2P6PAAE4null7ElementQzSgvp", - key.offset: 1083, + key.offset: 1091, key.length: 31, key.fully_annotated_decl: "var null: Self.Element? { get }" } @@ -2058,7 +2082,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.protocol, key.name: "Prot", key.usr: "s:4cake4ProtP", - key.offset: 1118, + key.offset: 1126, key.length: 102, key.fully_annotated_decl: "protocol Prot", key.entities: [ @@ -2066,7 +2090,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.associatedtype, key.name: "Element", key.usr: "s:4cake4ProtP7Element", - key.offset: 1139, + key.offset: 1147, key.length: 22, key.fully_annotated_decl: "associatedtype Element" }, @@ -2074,7 +2098,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.instance, key.name: "p", key.usr: "s:4cake4ProtP1pSivp", - key.offset: 1167, + key.offset: 1175, key.length: 18, key.fully_annotated_decl: "var p: Int { get }" }, @@ -2082,7 +2106,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo()", key.usr: "s:4cake4ProtP3fooyyF", - key.offset: 1191, + key.offset: 1199, key.length: 10, key.fully_annotated_decl: "func foo()" }, @@ -2090,7 +2114,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo1()", key.usr: "s:4cake4ProtP4foo1yyF", - key.offset: 1207, + key.offset: 1215, key.length: 11, key.fully_annotated_decl: "func foo1()" } @@ -2098,7 +2122,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen }, { key.kind: source.lang.swift.decl.extension.protocol, - key.offset: 1222, + key.offset: 1230, key.length: 79, key.extends: { key.kind: source.lang.swift.ref.protocol, @@ -2111,7 +2135,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "foo1()", key.usr: "s:4cake4ProtPAAE4foo1yyF", key.default_implementation_of: "s:4cake4ProtP4foo1yyF", - key.offset: 1244, + key.offset: 1252, key.length: 11, key.fully_annotated_decl: "func foo1()" }, @@ -2119,7 +2143,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.subscript, key.name: "subscript(_:)", key.usr: "s:4cake4ProtPAAES2icip", - key.offset: 1261, + key.offset: 1269, key.length: 38, key.fully_annotated_decl: "subscript(index: Int) -> Int { get }", key.entities: [ @@ -2127,7 +2151,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "index", - key.offset: 1280, + key.offset: 1288, key.length: 3 } ] @@ -2141,7 +2165,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.description: "Self.Element == Int" } ], - key.offset: 1303, + key.offset: 1311, key.length: 63, key.extends: { key.kind: source.lang.swift.ref.protocol, @@ -2153,7 +2177,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "extfoo()", key.usr: "s:4cake4ProtPAASi7ElementRtzrlE6extfooyyF", - key.offset: 1351, + key.offset: 1359, key.length: 13, key.fully_annotated_decl: "func extfoo()" } @@ -2163,7 +2187,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.struct, key.name: "S1", key.usr: "s:4cake2S1V", - key.offset: 1368, + key.offset: 1376, key.length: 142, key.fully_annotated_decl: "struct S1", key.entities: [ @@ -2171,7 +2195,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enum, key.name: "SE", key.usr: "s:4cake2S1V2SEO", - key.offset: 1385, + key.offset: 1393, key.length: 63, key.fully_annotated_decl: "enum S1.SE", key.entities: [ @@ -2179,7 +2203,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enumelement, key.name: "a", key.usr: "s:4cake2S1V2SEO1aA2EmF", - key.offset: 1404, + key.offset: 1412, key.length: 6, key.fully_annotated_decl: "case a" }, @@ -2187,7 +2211,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enumelement, key.name: "b", key.usr: "s:4cake2S1V2SEO1bA2EmF", - key.offset: 1420, + key.offset: 1428, key.length: 6, key.fully_annotated_decl: "case b" }, @@ -2195,7 +2219,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.enumelement, key.name: "c", key.usr: "s:4cake2S1V2SEO1cA2EmF", - key.offset: 1436, + key.offset: 1444, key.length: 6, key.fully_annotated_decl: "case c" } @@ -2205,7 +2229,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo1()", key.usr: "s:4cake2S1V4foo1yyF", - key.offset: 1454, + key.offset: 1462, key.length: 11, key.fully_annotated_decl: "func foo1()" }, @@ -2213,7 +2237,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.struct, key.name: "S2", key.usr: "s:4cake2S1V2S2V", - key.offset: 1471, + key.offset: 1479, key.length: 37, key.fully_annotated_decl: "struct S2", key.entities: [ @@ -2221,7 +2245,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.instance, key.name: "b", key.usr: "s:4cake2S1V2S2V1bSivp", - key.offset: 1492, + key.offset: 1500, key.length: 10, key.fully_annotated_decl: "let b: Int" } @@ -2231,8 +2255,8 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen }, { key.kind: source.lang.swift.decl.extension.enum, - key.offset: 1512, - key.length: 73, + key.offset: 1520, + key.length: 81, key.extends: { key.kind: source.lang.swift.ref.enum, key.name: "SE", @@ -2245,7 +2269,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.usr: "s:s9EquatablePsE2neoiSbx_xtFZ::SYNTHESIZED::s:4cake2S1V2SEO", key.original_usr: "s:s9EquatablePsE2neoiSbx_xtFZ", key.doc.full_as_xml: "!=(_:_:)s:s9EquatablePsE2neoiSbx_xtFZstatic func != (lhs: Self, rhs: Self) -> BoolReturns a Boolean value indicating whether two values are not equal.lhsinA value to compare.rhsinAnother value to compare.Inequality is the inverse of equality. For any values a and b, a != b implies that a == b is false.This is the default implementation of the not-equal-to operator (!=) for any type that conforms to Equatable.", - key.offset: 1532, + key.offset: 1548, key.length: 51, key.fully_annotated_decl: "@_inlineable static func != (lhs: S1.SE, rhs: S1.SE) -> Bool", key.entities: [ @@ -2253,14 +2277,14 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "lhs", - key.offset: 1555, + key.offset: 1571, key.length: 5 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "rhs", - key.offset: 1569, + key.offset: 1585, key.length: 5 } ] @@ -2271,7 +2295,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.struct, key.name: "S2", key.usr: "s:4cake2S2V", - key.offset: 1587, + key.offset: 1603, key.length: 45, key.fully_annotated_decl: "struct S2 : P3", key.conforms: [ @@ -2286,7 +2310,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.typealias, key.name: "T", key.usr: "s:4cake2S2V1Ta", - key.offset: 1609, + key.offset: 1625, key.length: 21, key.fully_annotated_decl: "typealias S2.T = S2", key.conforms: [ @@ -2313,7 +2337,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.description: "Wrapped : P5" } ], - key.offset: 1634, + key.offset: 1650, key.length: 87, key.fully_annotated_decl: "struct S3<Wrapped> : P5 where Wrapped : P5", key.conforms: [ @@ -2328,7 +2352,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.typealias, key.name: "Element", key.usr: "s:4cake2S3V7Elementa", - key.offset: 1684, + key.offset: 1700, key.length: 35, key.fully_annotated_decl: "typealias S3<Wrapped>.Element = Wrapped.Element", key.conforms: [ @@ -2343,7 +2367,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen }, { key.kind: source.lang.swift.decl.extension.struct, - key.offset: 1723, + key.offset: 1739, key.length: 56, key.extends: { key.kind: source.lang.swift.ref.struct, @@ -2356,7 +2380,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.name: "null", key.usr: "s:4cake2P6PAAE4null7ElementQzSgvp::SYNTHESIZED::s:4cake2S3V", key.original_usr: "s:4cake2P6PAAE4null7ElementQzSgvp", - key.offset: 1743, + key.offset: 1759, key.length: 34, key.fully_annotated_decl: "var null: Wrapped.Element? { get }" } @@ -2385,7 +2409,7 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.description: "T1.Element == C1.Element" } ], - key.offset: 1781, + key.offset: 1797, key.length: 100, key.fully_annotated_decl: "func genfoo<T1, T2>(x ix: T1, y iy: T2) where T1 : Prot, T2 : C1, T1.Element == C1.Element", key.entities: [ @@ -2393,14 +2417,14 @@ func genfoo(x ix: T1, y iy: T2) where T1 : Prot, T2 : cake.C1, T1.Elemen key.kind: source.lang.swift.decl.var.local, key.keyword: "x", key.name: "ix", - key.offset: 1807, + key.offset: 1823, key.length: 2 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "y", key.name: "iy", - key.offset: 1817, + key.offset: 1833, key.length: 2 } ] diff --git a/test/SourceKit/DocSupport/doc_swift_module1.swift.response b/test/SourceKit/DocSupport/doc_swift_module1.swift.response index e878974b0ce4e..03b6fa4124d9f 100644 --- a/test/SourceKit/DocSupport/doc_swift_module1.swift.response +++ b/test/SourceKit/DocSupport/doc_swift_module1.swift.response @@ -1,5 +1,10 @@ import SwiftOnoneSupport +extension Dictionary.Keys where Key : Hashable { + + func foo() +} + protocol P1 { func foo1() @@ -56,341 +61,420 @@ protocol P3 { { key.kind: source.lang.swift.syntaxtype.keyword, key.offset: 26, + key.length: 9 + }, + { + key.kind: source.lang.swift.ref.struct, + key.name: "Dictionary", + key.usr: "s:s10DictionaryV", + key.offset: 36, + key.length: 10 + }, + { + key.kind: source.lang.swift.ref.struct, + key.name: "Keys", + key.usr: "s:s10DictionaryV4KeysV", + key.offset: 47, + key.length: 4 + }, + { + key.kind: source.lang.swift.syntaxtype.keyword, + key.offset: 52, + key.length: 5 + }, + { + key.kind: source.lang.swift.syntaxtype.typeidentifier, + key.offset: 58, + key.length: 3 + }, + { + key.kind: source.lang.swift.ref.protocol, + key.name: "Hashable", + key.usr: "s:s8HashableP", + key.offset: 64, + key.length: 8 + }, + { + key.kind: source.lang.swift.syntaxtype.keyword, + key.offset: 80, + key.length: 4 + }, + { + key.kind: source.lang.swift.syntaxtype.identifier, + key.offset: 85, + key.length: 3 + }, + { + key.kind: source.lang.swift.syntaxtype.keyword, + key.offset: 94, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 35, + key.offset: 103, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 45, + key.offset: 113, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 50, + key.offset: 118, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 62, + key.offset: 130, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 66, + key.offset: 134, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 71, + key.offset: 139, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 77, + key.offset: 145, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 81, + key.offset: 149, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 92, + key.offset: 160, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 97, + key.offset: 165, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 102, + key.offset: 170, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 104, + key.offset: 172, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 107, + key.offset: 175, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 112, + key.offset: 180, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 114, + key.offset: 182, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 117, + key.offset: 185, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 127, + key.offset: 195, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 137, + key.offset: 205, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 139, + key.offset: 207, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 142, + key.offset: 210, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 150, + key.offset: 218, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 156, + key.offset: 224, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 160, + key.offset: 228, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 171, + key.offset: 239, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 176, + key.offset: 244, key.length: 13 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 195, + key.offset: 263, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 204, + key.offset: 272, key.length: 2 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P1", key.usr: "s:5cake12P1P", - key.offset: 209, + key.offset: 277, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 219, + key.offset: 287, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 224, + key.offset: 292, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 236, + key.offset: 304, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 241, + key.offset: 309, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 251, + key.offset: 319, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P2", key.usr: "s:5cake12P2P", - key.offset: 261, + key.offset: 329, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 271, + key.offset: 339, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 276, + key.offset: 344, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 288, + key.offset: 356, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 292, + key.offset: 360, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 297, + key.offset: 365, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 306, + key.offset: 374, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 311, + key.offset: 379, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 316, + key.offset: 384, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 318, + key.offset: 386, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 321, + key.offset: 389, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 326, + key.offset: 394, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 328, + key.offset: 396, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 331, + key.offset: 399, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 341, + key.offset: 409, key.length: 9 }, { key.kind: source.lang.swift.syntaxtype.argument, - key.offset: 351, + key.offset: 419, key.length: 1 }, { key.kind: source.lang.swift.syntaxtype.parameter, - key.offset: 353, + key.offset: 421, key.length: 1 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 356, + key.offset: 424, key.length: 3 }, { key.kind: source.lang.swift.ref.struct, key.name: "Int", key.usr: "s:Si", - key.offset: 364, + key.offset: 432, key.length: 3 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 371, + key.offset: 439, key.length: 9 }, { key.kind: source.lang.swift.ref.protocol, key.name: "P2", key.usr: "s:5cake12P2P", - key.offset: 381, + key.offset: 449, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 391, + key.offset: 459, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 396, + key.offset: 464, key.length: 13 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 415, + key.offset: 483, key.length: 8 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 424, + key.offset: 492, key.length: 2 }, { key.kind: source.lang.swift.syntaxtype.keyword, - key.offset: 434, + key.offset: 502, key.length: 4 }, { key.kind: source.lang.swift.syntaxtype.identifier, - key.offset: 439, + key.offset: 507, key.length: 10 } ] [ + { + key.kind: source.lang.swift.decl.extension.struct, + key.generic_params: [ + { + key.name: "Key" + }, + { + key.name: "Value" + } + ], + key.generic_requirements: [ + { + key.description: "Key : Hashable" + } + ], + key.offset: 26, + key.length: 66, + key.extends: { + key.kind: source.lang.swift.ref.struct, + key.name: "Keys", + key.usr: "s:s10DictionaryV4KeysV" + }, + key.entities: [ + { + key.kind: source.lang.swift.decl.function.method.instance, + key.name: "foo()", + key.usr: "s:s10DictionaryV4KeysV5cake1E3fooyyF", + key.offset: 80, + key.length: 10, + key.fully_annotated_decl: "func foo()" + } + ] + }, { key.kind: source.lang.swift.decl.protocol, key.name: "P1", key.usr: "s:5cake12P1P", - key.offset: 26, + key.offset: 94, key.length: 167, key.fully_annotated_decl: "protocol P1", key.entities: [ @@ -398,7 +482,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo1()", key.usr: "s:5cake12P1P4foo1yyF", - key.offset: 45, + key.offset: 113, key.length: 11, key.fully_annotated_decl: "func foo1()" }, @@ -406,7 +490,7 @@ protocol P3 { key.kind: source.lang.swift.decl.var.instance, key.name: "Ins", key.usr: "s:5cake12P1P3InsSivp", - key.offset: 62, + key.offset: 130, key.length: 24, key.fully_annotated_decl: "var Ins: Int { get set }" }, @@ -414,7 +498,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.method.instance, key.name: "foo2(a:b:)", key.usr: "s:5cake12P1P4foo2ySi1a_Si1btF", - key.offset: 92, + key.offset: 160, key.length: 29, key.fully_annotated_decl: "func foo2(a: Int, b: Int)", key.entities: [ @@ -422,14 +506,14 @@ protocol P3 { key.kind: source.lang.swift.decl.var.local, key.keyword: "a", key.name: "a", - key.offset: 107, + key.offset: 175, key.length: 3 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "b", key.name: "b", - key.offset: 117, + key.offset: 185, key.length: 3 } ] @@ -438,7 +522,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.subscript, key.name: "subscript(_:)", key.usr: "s:5cake12P1PS2icip", - key.offset: 127, + key.offset: 195, key.length: 38, key.fully_annotated_decl: "subscript(a: Int) -> Int { get set }", key.entities: [ @@ -446,7 +530,7 @@ protocol P3 { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "a", - key.offset: 142, + key.offset: 210, key.length: 3 } ] @@ -455,7 +539,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.method.instance, key.name: "fooConstraint()", key.usr: "s:5cake12P1P13fooConstraintyyF", - key.offset: 171, + key.offset: 239, key.length: 20, key.fully_annotated_decl: "func fooConstraint()" } @@ -465,7 +549,7 @@ protocol P3 { key.kind: source.lang.swift.decl.protocol, key.name: "P2", key.usr: "s:5cake12P2P", - key.offset: 195, + key.offset: 263, key.length: 54, key.fully_annotated_decl: "protocol P2 : P1", key.conforms: [ @@ -480,7 +564,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.method.instance, key.name: "bar1()", key.usr: "s:5cake12P2P4bar1yyF", - key.offset: 219, + key.offset: 287, key.length: 11, key.fully_annotated_decl: "func bar1()" }, @@ -488,7 +572,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.method.instance, key.name: "bar2()", key.usr: "s:5cake12P2P4bar2yyF", - key.offset: 236, + key.offset: 304, key.length: 11, key.fully_annotated_decl: "func bar2()" } @@ -496,7 +580,7 @@ protocol P3 { }, { key.kind: source.lang.swift.decl.extension.protocol, - key.offset: 251, + key.offset: 319, key.length: 118, key.extends: { key.kind: source.lang.swift.ref.protocol, @@ -509,7 +593,7 @@ protocol P3 { key.name: "foo1()", key.usr: "s:5cake12P2PAAE4foo1yyF", key.default_implementation_of: "s:5cake12P1P4foo1yyF", - key.offset: 271, + key.offset: 339, key.length: 11, key.fully_annotated_decl: "func foo1()" }, @@ -518,7 +602,7 @@ protocol P3 { key.name: "Ins", key.usr: "s:5cake12P2PAAE3InsSivp", key.default_implementation_of: "s:5cake12P1P3InsSivp", - key.offset: 288, + key.offset: 356, key.length: 12, key.fully_annotated_decl: "var Ins: Int { get set }" }, @@ -527,7 +611,7 @@ protocol P3 { key.name: "foo2(a:b:)", key.usr: "s:5cake12P2PAAE4foo2ySi1a_Si1btF", key.default_implementation_of: "s:5cake12P1P4foo2ySi1a_Si1btF", - key.offset: 306, + key.offset: 374, key.length: 29, key.fully_annotated_decl: "func foo2(a: Int, b: Int)", key.entities: [ @@ -535,14 +619,14 @@ protocol P3 { key.kind: source.lang.swift.decl.var.local, key.keyword: "a", key.name: "a", - key.offset: 321, + key.offset: 389, key.length: 3 }, { key.kind: source.lang.swift.decl.var.local, key.keyword: "b", key.name: "b", - key.offset: 331, + key.offset: 399, key.length: 3 } ] @@ -552,7 +636,7 @@ protocol P3 { key.name: "subscript(_:)", key.usr: "s:5cake12P2PAAES2icip", key.default_implementation_of: "s:5cake12P1PS2icip", - key.offset: 341, + key.offset: 409, key.length: 26, key.fully_annotated_decl: "subscript(a: Int) -> Int { get set }", key.entities: [ @@ -560,7 +644,7 @@ protocol P3 { key.kind: source.lang.swift.decl.var.local, key.keyword: "_", key.name: "a", - key.offset: 356, + key.offset: 424, key.length: 3 } ] @@ -574,7 +658,7 @@ protocol P3 { key.description: "Self : P3" } ], - key.offset: 371, + key.offset: 439, key.length: 42, key.extends: { key.kind: source.lang.swift.ref.protocol, @@ -587,7 +671,7 @@ protocol P3 { key.name: "fooConstraint()", key.usr: "s:5cake12P2PA2A2P3RzrlE13fooConstraintyyF", key.default_implementation_of: "s:5cake12P1P13fooConstraintyyF", - key.offset: 391, + key.offset: 459, key.length: 20, key.fully_annotated_decl: "func fooConstraint()" } @@ -597,7 +681,7 @@ protocol P3 { key.kind: source.lang.swift.decl.protocol, key.name: "P3", key.usr: "s:5cake12P3P", - key.offset: 415, + key.offset: 483, key.length: 38, key.fully_annotated_decl: "protocol P3", key.entities: [ @@ -605,7 +689,7 @@ protocol P3 { key.kind: source.lang.swift.decl.function.method.instance, key.name: "p3Required()", key.usr: "s:5cake12P3P10p3RequiredyyF", - key.offset: 434, + key.offset: 502, key.length: 17, key.fully_annotated_decl: "func p3Required()" }