File tree Expand file tree Collapse file tree 5 files changed +282
-33
lines changed
test/SourceKit/DocumentStructure
tools/SourceKit/lib/SwiftLang Expand file tree Collapse file tree 5 files changed +282
-33
lines changed Original file line number Diff line number Diff line change @@ -149,7 +149,19 @@ deinit {
149
149
}
150
150
151
151
#if false
152
- extension Result {
153
- func foo( ) { }
154
- }
155
- #endif
152
+ extension Result {
153
+ func foo( ) { }
154
+ }
155
+
156
+ extension Outer {
157
+ class Inner {
158
+ deinit { }
159
+ }
160
+ }
161
+
162
+ public extension Outer2 {
163
+ class Inner2 {
164
+ deinit { }
165
+ }
166
+ }
167
+ #endif
Original file line number Diff line number Diff line change 1
1
{
2
2
key.offset: 0,
3
- key.length: 2472 ,
3
+ key.length: 2587 ,
4
4
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
5
5
key.substructure: [
6
6
{
1519
1519
{
1520
1520
key.kind: source.lang.swift.decl.extension,
1521
1521
key.name: "Result",
1522
- key.offset: 2425 ,
1523
- key.length: 38 ,
1524
- key.nameoffset: 2435 ,
1522
+ key.offset: 2424 ,
1523
+ key.length: 36 ,
1524
+ key.nameoffset: 2434 ,
1525
1525
key.namelength: 6,
1526
- key.bodyoffset: 2443 ,
1527
- key.bodylength: 19 ,
1526
+ key.bodyoffset: 2442 ,
1527
+ key.bodylength: 17 ,
1528
1528
key.substructure: [
1529
1529
{
1530
1530
key.kind: source.lang.swift.decl.function.method.instance,
1531
1531
key.name: "foo()",
1532
- key.offset: 2447 ,
1532
+ key.offset: 2445 ,
1533
1533
key.length: 13,
1534
- key.nameoffset: 2452 ,
1534
+ key.nameoffset: 2450 ,
1535
1535
key.namelength: 5,
1536
- key.bodyoffset: 2459 ,
1536
+ key.bodyoffset: 2457 ,
1537
1537
key.bodylength: 0
1538
1538
}
1539
1539
]
1540
+ },
1541
+ {
1542
+ key.kind: source.lang.swift.decl.extension,
1543
+ key.name: "Outer",
1544
+ key.offset: 2462,
1545
+ key.length: 53,
1546
+ key.nameoffset: 2472,
1547
+ key.namelength: 5,
1548
+ key.bodyoffset: 2479,
1549
+ key.bodylength: 35,
1550
+ key.substructure: [
1551
+ {
1552
+ key.kind: source.lang.swift.decl.class,
1553
+ key.name: "Inner",
1554
+ key.offset: 2482,
1555
+ key.length: 31,
1556
+ key.nameoffset: 2488,
1557
+ key.namelength: 5,
1558
+ key.bodyoffset: 2495,
1559
+ key.bodylength: 17,
1560
+ key.substructure: [
1561
+ {
1562
+ key.kind: source.lang.swift.decl.function.method.instance,
1563
+ key.name: "deinit",
1564
+ key.offset: 2500,
1565
+ key.length: 9,
1566
+ key.nameoffset: 2500,
1567
+ key.namelength: 6,
1568
+ key.bodyoffset: 2508,
1569
+ key.bodylength: 0
1570
+ }
1571
+ ]
1572
+ }
1573
+ ]
1574
+ },
1575
+ {
1576
+ key.kind: source.lang.swift.decl.extension,
1577
+ key.accessibility: source.lang.swift.accessibility.public,
1578
+ key.name: "Outer2",
1579
+ key.offset: 2524,
1580
+ key.length: 55,
1581
+ key.nameoffset: 2534,
1582
+ key.namelength: 6,
1583
+ key.bodyoffset: 2542,
1584
+ key.bodylength: 36,
1585
+ key.attributes: [
1586
+ {
1587
+ key.offset: 2517,
1588
+ key.length: 6,
1589
+ key.attribute: source.decl.attribute.public
1590
+ }
1591
+ ],
1592
+ key.substructure: [
1593
+ {
1594
+ key.kind: source.lang.swift.decl.class,
1595
+ key.accessibility: source.lang.swift.accessibility.public,
1596
+ key.name: "Inner2",
1597
+ key.offset: 2545,
1598
+ key.length: 32,
1599
+ key.nameoffset: 2551,
1600
+ key.namelength: 6,
1601
+ key.bodyoffset: 2559,
1602
+ key.bodylength: 17,
1603
+ key.substructure: [
1604
+ {
1605
+ key.kind: source.lang.swift.decl.function.method.instance,
1606
+ key.accessibility: source.lang.swift.accessibility.public,
1607
+ key.name: "deinit",
1608
+ key.offset: 2564,
1609
+ key.length: 9,
1610
+ key.nameoffset: 2564,
1611
+ key.namelength: 6,
1612
+ key.bodyoffset: 2572,
1613
+ key.bodylength: 0
1614
+ }
1615
+ ]
1616
+ }
1617
+ ]
1540
1618
}
1541
1619
],
1542
1620
key.diagnostics: [
Original file line number Diff line number Diff line change 1
1
{
2
2
key.offset: 0,
3
- key.length: 2472 ,
3
+ key.length: 2587 ,
4
4
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
5
5
key.substructure: [
6
6
{
1519
1519
{
1520
1520
key.kind: source.lang.swift.decl.extension,
1521
1521
key.name: "Result",
1522
- key.offset: 2425 ,
1523
- key.length: 38 ,
1524
- key.nameoffset: 2435 ,
1522
+ key.offset: 2424 ,
1523
+ key.length: 36 ,
1524
+ key.nameoffset: 2434 ,
1525
1525
key.namelength: 6,
1526
- key.bodyoffset: 2443 ,
1527
- key.bodylength: 19 ,
1526
+ key.bodyoffset: 2442 ,
1527
+ key.bodylength: 17 ,
1528
1528
key.substructure: [
1529
1529
{
1530
1530
key.kind: source.lang.swift.decl.function.method.instance,
1531
1531
key.name: "foo()",
1532
- key.offset: 2447 ,
1532
+ key.offset: 2445 ,
1533
1533
key.length: 13,
1534
- key.nameoffset: 2452 ,
1534
+ key.nameoffset: 2450 ,
1535
1535
key.namelength: 5,
1536
- key.bodyoffset: 2459 ,
1536
+ key.bodyoffset: 2457 ,
1537
1537
key.bodylength: 0
1538
1538
}
1539
1539
]
1540
+ },
1541
+ {
1542
+ key.kind: source.lang.swift.decl.extension,
1543
+ key.name: "Outer",
1544
+ key.offset: 2462,
1545
+ key.length: 53,
1546
+ key.nameoffset: 2472,
1547
+ key.namelength: 5,
1548
+ key.bodyoffset: 2479,
1549
+ key.bodylength: 35,
1550
+ key.substructure: [
1551
+ {
1552
+ key.kind: source.lang.swift.decl.class,
1553
+ key.name: "Inner",
1554
+ key.offset: 2482,
1555
+ key.length: 31,
1556
+ key.nameoffset: 2488,
1557
+ key.namelength: 5,
1558
+ key.bodyoffset: 2495,
1559
+ key.bodylength: 17,
1560
+ key.substructure: [
1561
+ {
1562
+ key.kind: source.lang.swift.decl.function.method.instance,
1563
+ key.name: "deinit",
1564
+ key.offset: 2500,
1565
+ key.length: 9,
1566
+ key.nameoffset: 2500,
1567
+ key.namelength: 6,
1568
+ key.bodyoffset: 2508,
1569
+ key.bodylength: 0
1570
+ }
1571
+ ]
1572
+ }
1573
+ ]
1574
+ },
1575
+ {
1576
+ key.kind: source.lang.swift.decl.extension,
1577
+ key.accessibility: source.lang.swift.accessibility.public,
1578
+ key.name: "Outer2",
1579
+ key.offset: 2524,
1580
+ key.length: 55,
1581
+ key.nameoffset: 2534,
1582
+ key.namelength: 6,
1583
+ key.bodyoffset: 2542,
1584
+ key.bodylength: 36,
1585
+ key.attributes: [
1586
+ {
1587
+ key.offset: 2517,
1588
+ key.length: 6,
1589
+ key.attribute: source.decl.attribute.public
1590
+ }
1591
+ ],
1592
+ key.substructure: [
1593
+ {
1594
+ key.kind: source.lang.swift.decl.class,
1595
+ key.accessibility: source.lang.swift.accessibility.public,
1596
+ key.name: "Inner2",
1597
+ key.offset: 2545,
1598
+ key.length: 32,
1599
+ key.nameoffset: 2551,
1600
+ key.namelength: 6,
1601
+ key.bodyoffset: 2559,
1602
+ key.bodylength: 17,
1603
+ key.substructure: [
1604
+ {
1605
+ key.kind: source.lang.swift.decl.function.method.instance,
1606
+ key.accessibility: source.lang.swift.accessibility.public,
1607
+ key.name: "deinit",
1608
+ key.offset: 2564,
1609
+ key.length: 9,
1610
+ key.nameoffset: 2564,
1611
+ key.namelength: 6,
1612
+ key.bodyoffset: 2572,
1613
+ key.bodylength: 0
1614
+ }
1615
+ ]
1616
+ }
1617
+ ]
1540
1618
}
1541
1619
],
1542
1620
key.diagnostics: [
Original file line number Diff line number Diff line change 1
1
{
2
2
key.offset: 0,
3
- key.length: 2472 ,
3
+ key.length: 2587 ,
4
4
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
5
5
key.substructure: [
6
6
{
1519
1519
{
1520
1520
key.kind: source.lang.swift.decl.extension,
1521
1521
key.name: "Result",
1522
- key.offset: 2425 ,
1523
- key.length: 38 ,
1524
- key.nameoffset: 2435 ,
1522
+ key.offset: 2424 ,
1523
+ key.length: 36 ,
1524
+ key.nameoffset: 2434 ,
1525
1525
key.namelength: 6,
1526
- key.bodyoffset: 2443 ,
1527
- key.bodylength: 19 ,
1526
+ key.bodyoffset: 2442 ,
1527
+ key.bodylength: 17 ,
1528
1528
key.substructure: [
1529
1529
{
1530
1530
key.kind: source.lang.swift.decl.function.method.instance,
1531
1531
key.name: "foo()",
1532
- key.offset: 2447 ,
1532
+ key.offset: 2445 ,
1533
1533
key.length: 13,
1534
- key.nameoffset: 2452 ,
1534
+ key.nameoffset: 2450 ,
1535
1535
key.namelength: 5,
1536
- key.bodyoffset: 2459 ,
1536
+ key.bodyoffset: 2457 ,
1537
1537
key.bodylength: 0
1538
1538
}
1539
1539
]
1540
+ },
1541
+ {
1542
+ key.kind: source.lang.swift.decl.extension,
1543
+ key.name: "Outer",
1544
+ key.offset: 2462,
1545
+ key.length: 53,
1546
+ key.nameoffset: 2472,
1547
+ key.namelength: 5,
1548
+ key.bodyoffset: 2479,
1549
+ key.bodylength: 35,
1550
+ key.substructure: [
1551
+ {
1552
+ key.kind: source.lang.swift.decl.class,
1553
+ key.name: "Inner",
1554
+ key.offset: 2482,
1555
+ key.length: 31,
1556
+ key.nameoffset: 2488,
1557
+ key.namelength: 5,
1558
+ key.bodyoffset: 2495,
1559
+ key.bodylength: 17,
1560
+ key.substructure: [
1561
+ {
1562
+ key.kind: source.lang.swift.decl.function.method.instance,
1563
+ key.name: "deinit",
1564
+ key.offset: 2500,
1565
+ key.length: 9,
1566
+ key.nameoffset: 2500,
1567
+ key.namelength: 6,
1568
+ key.bodyoffset: 2508,
1569
+ key.bodylength: 0
1570
+ }
1571
+ ]
1572
+ }
1573
+ ]
1574
+ },
1575
+ {
1576
+ key.kind: source.lang.swift.decl.extension,
1577
+ key.accessibility: source.lang.swift.accessibility.public,
1578
+ key.name: "Outer2",
1579
+ key.offset: 2524,
1580
+ key.length: 55,
1581
+ key.nameoffset: 2534,
1582
+ key.namelength: 6,
1583
+ key.bodyoffset: 2542,
1584
+ key.bodylength: 36,
1585
+ key.attributes: [
1586
+ {
1587
+ key.offset: 2517,
1588
+ key.length: 6,
1589
+ key.attribute: source.decl.attribute.public
1590
+ }
1591
+ ],
1592
+ key.substructure: [
1593
+ {
1594
+ key.kind: source.lang.swift.decl.class,
1595
+ key.accessibility: source.lang.swift.accessibility.public,
1596
+ key.name: "Inner2",
1597
+ key.offset: 2545,
1598
+ key.length: 32,
1599
+ key.nameoffset: 2551,
1600
+ key.namelength: 6,
1601
+ key.bodyoffset: 2559,
1602
+ key.bodylength: 17,
1603
+ key.substructure: [
1604
+ {
1605
+ key.kind: source.lang.swift.decl.function.method.instance,
1606
+ key.accessibility: source.lang.swift.accessibility.public,
1607
+ key.name: "deinit",
1608
+ key.offset: 2564,
1609
+ key.length: 9,
1610
+ key.nameoffset: 2564,
1611
+ key.namelength: 6,
1612
+ key.bodyoffset: 2572,
1613
+ key.bodylength: 0
1614
+ }
1615
+ ]
1616
+ }
1617
+ ]
1540
1618
}
1541
1619
],
1542
1620
key.diagnostics: [
Original file line number Diff line number Diff line change @@ -1143,8 +1143,11 @@ static Optional<AccessLevel> inferAccessSyntactically(const ValueDecl *D) {
1143
1143
1144
1144
if (D->getKind () == DeclKind::Destructor ||
1145
1145
D->getKind () == DeclKind::EnumElement) {
1146
- if (auto container = dyn_cast<NominalTypeDecl>(D->getDeclContext ()))
1147
- return std::max (container->getFormalAccess (), AccessLevel::Internal);
1146
+ if (auto container = dyn_cast<NominalTypeDecl>(D->getDeclContext ())) {
1147
+ if (auto containerAccess = inferAccessSyntactically (container))
1148
+ return std::max (containerAccess.getValue (), AccessLevel::Internal);
1149
+ return None;
1150
+ }
1148
1151
return AccessLevel::Private;
1149
1152
}
1150
1153
You can’t perform that action at this time.
0 commit comments