Skip to content

Commit c21b26d

Browse files
authored
Merge pull request swiftlang#32047 from nathawes/interface-gen-exposed-underscore-5.3
[5.3][SourceKit][InterfaceGen] Don't print clang decls marked with the swift_private attribute.
2 parents a0fa03f + e93c4a1 commit c21b26d

File tree

5 files changed

+34
-21
lines changed

5 files changed

+34
-21
lines changed

include/swift/AST/PrintOptions.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ struct PrintOptions {
232232
/// Whether to print unavailable parts of the AST.
233233
bool SkipUnavailable = false;
234234

235+
bool SkipSwiftPrivateClangDecls = false;
236+
235237
/// Whether to skip internal stdlib declarations.
236238
bool SkipPrivateStdlibDecls = false;
237239

@@ -515,6 +517,7 @@ struct PrintOptions {
515517
PrintOptions result = printForDiagnostics();
516518
result.SkipUnavailable = true;
517519
result.SkipImplicit = true;
520+
result.SkipSwiftPrivateClangDecls = true;
518521
result.SkipPrivateStdlibDecls = true;
519522
result.SkipUnderscoredStdlibProtocols = true;
520523
result.SkipDeinit = true;

lib/AST/ASTPrinter.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
#include "swift/Parse/Lexer.h"
4444
#include "swift/Strings.h"
4545
#include "clang/AST/ASTContext.h"
46+
#include "clang/AST/Attr.h"
4647
#include "clang/AST/Decl.h"
4748
#include "clang/AST/DeclObjC.h"
4849
#include "clang/Basic/Module.h"
@@ -1670,6 +1671,14 @@ bool ShouldPrintChecker::shouldPrint(const Decl *D,
16701671
return false;
16711672
}
16721673

1674+
// Skip clang decls marked with the swift_private attribute.
1675+
if (Options.SkipSwiftPrivateClangDecls) {
1676+
if (auto ClangD = D->getClangDecl()) {
1677+
if (ClangD->hasAttr<clang::SwiftPrivateAttr>())
1678+
return false;
1679+
}
1680+
}
1681+
16731682
if (Options.SkipPrivateStdlibDecls &&
16741683
D->isPrivateStdlibDecl(!Options.SkipUnderscoredStdlibProtocols))
16751684
return false;

test/SourceKit/DocSupport/doc_clang_module.swift.response

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6525,135 +6525,135 @@ var FooSubUnnamedEnumeratorA1: Int { get }
65256525
{
65266526
key.kind: source.lang.swift.decl.var.global,
65276527
key.name: "FOO_MACRO_1",
6528-
key.usr: "c:Foo.h@3720@macro@FOO_MACRO_1",
6528+
key.usr: "c:Foo.h@3836@macro@FOO_MACRO_1",
65296529
key.offset: 5394,
65306530
key.length: 30,
65316531
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65326532
},
65336533
{
65346534
key.kind: source.lang.swift.decl.var.global,
65356535
key.name: "FOO_MACRO_2",
6536-
key.usr: "c:Foo.h@3742@macro@FOO_MACRO_2",
6536+
key.usr: "c:Foo.h@3858@macro@FOO_MACRO_2",
65376537
key.offset: 5425,
65386538
key.length: 30,
65396539
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65406540
},
65416541
{
65426542
key.kind: source.lang.swift.decl.var.global,
65436543
key.name: "FOO_MACRO_3",
6544-
key.usr: "c:Foo.h@3764@macro@FOO_MACRO_3",
6544+
key.usr: "c:Foo.h@3880@macro@FOO_MACRO_3",
65456545
key.offset: 5456,
65466546
key.length: 30,
65476547
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_3</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65486548
},
65496549
{
65506550
key.kind: source.lang.swift.decl.var.global,
65516551
key.name: "FOO_MACRO_4",
6552-
key.usr: "c:Foo.h@3828@macro@FOO_MACRO_4",
6552+
key.usr: "c:Foo.h@3944@macro@FOO_MACRO_4",
65536553
key.offset: 5487,
65546554
key.length: 31,
65556555
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_4</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65566556
},
65576557
{
65586558
key.kind: source.lang.swift.decl.var.global,
65596559
key.name: "FOO_MACRO_5",
6560-
key.usr: "c:Foo.h@3860@macro@FOO_MACRO_5",
6560+
key.usr: "c:Foo.h@3976@macro@FOO_MACRO_5",
65616561
key.offset: 5519,
65626562
key.length: 31,
65636563
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_5</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt64V\">UInt64</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65646564
},
65656565
{
65666566
key.kind: source.lang.swift.decl.var.global,
65676567
key.name: "FOO_MACRO_6",
6568-
key.usr: "c:Foo.h@3902@macro@FOO_MACRO_6",
6568+
key.usr: "c:Foo.h@4018@macro@FOO_MACRO_6",
65696569
key.offset: 5551,
65706570
key.length: 38,
65716571
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_6</decl.name>: <decl.var.type><ref.typealias usr=\"c:Foo.h@T@typedef_int_t\">typedef_int_t</ref.typealias></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65726572
},
65736573
{
65746574
key.kind: source.lang.swift.decl.var.global,
65756575
key.name: "FOO_MACRO_7",
6576-
key.usr: "c:Foo.h@3943@macro@FOO_MACRO_7",
6576+
key.usr: "c:Foo.h@4059@macro@FOO_MACRO_7",
65776577
key.offset: 5590,
65786578
key.length: 38,
65796579
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_7</decl.name>: <decl.var.type><ref.typealias usr=\"c:Foo.h@T@typedef_int_t\">typedef_int_t</ref.typealias></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65806580
},
65816581
{
65826582
key.kind: source.lang.swift.decl.var.global,
65836583
key.name: "FOO_MACRO_8",
6584-
key.usr: "c:Foo.h@3984@macro@FOO_MACRO_8",
6584+
key.usr: "c:Foo.h@4100@macro@FOO_MACRO_8",
65856585
key.offset: 5629,
65866586
key.length: 29,
65876587
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_8</decl.name>: <decl.var.type><ref.struct usr=\"s:s4Int8V\">Int8</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65886588
},
65896589
{
65906590
key.kind: source.lang.swift.decl.var.global,
65916591
key.name: "FOO_MACRO_9",
6592-
key.usr: "c:Foo.h@4015@macro@FOO_MACRO_9",
6592+
key.usr: "c:Foo.h@4131@macro@FOO_MACRO_9",
65936593
key.offset: 5659,
65946594
key.length: 30,
65956595
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_9</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
65966596
},
65976597
{
65986598
key.kind: source.lang.swift.decl.var.global,
65996599
key.name: "FOO_MACRO_10",
6600-
key.usr: "c:Foo.h@4045@macro@FOO_MACRO_10",
6600+
key.usr: "c:Foo.h@4161@macro@FOO_MACRO_10",
66016601
key.offset: 5690,
66026602
key.length: 31,
66036603
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_10</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int16V\">Int16</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66046604
},
66056605
{
66066606
key.kind: source.lang.swift.decl.var.global,
66076607
key.name: "FOO_MACRO_11",
6608-
key.usr: "c:Foo.h@4079@macro@FOO_MACRO_11",
6608+
key.usr: "c:Foo.h@4195@macro@FOO_MACRO_11",
66096609
key.offset: 5722,
66106610
key.length: 29,
66116611
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_11</decl.name>: <decl.var.type><ref.struct usr=\"s:Si\">Int</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66126612
},
66136613
{
66146614
key.kind: source.lang.swift.decl.var.global,
66156615
key.name: "FOO_MACRO_OR",
6616-
key.usr: "c:Foo.h@4112@macro@FOO_MACRO_OR",
6616+
key.usr: "c:Foo.h@4228@macro@FOO_MACRO_OR",
66176617
key.offset: 5752,
66186618
key.length: 31,
66196619
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_OR</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66206620
},
66216621
{
66226622
key.kind: source.lang.swift.decl.var.global,
66236623
key.name: "FOO_MACRO_AND",
6624-
key.usr: "c:Foo.h@4161@macro@FOO_MACRO_AND",
6624+
key.usr: "c:Foo.h@4277@macro@FOO_MACRO_AND",
66256625
key.offset: 5784,
66266626
key.length: 32,
66276627
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_AND</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66286628
},
66296629
{
66306630
key.kind: source.lang.swift.decl.var.global,
66316631
key.name: "FOO_MACRO_BITWIDTH",
6632-
key.usr: "c:Foo.h@4211@macro@FOO_MACRO_BITWIDTH",
6632+
key.usr: "c:Foo.h@4327@macro@FOO_MACRO_BITWIDTH",
66336633
key.offset: 5817,
66346634
key.length: 38,
66356635
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_BITWIDTH</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt64V\">UInt64</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66366636
},
66376637
{
66386638
key.kind: source.lang.swift.decl.var.global,
66396639
key.name: "FOO_MACRO_SIGNED",
6640-
key.usr: "c:Foo.h@4266@macro@FOO_MACRO_SIGNED",
6640+
key.usr: "c:Foo.h@4382@macro@FOO_MACRO_SIGNED",
66416641
key.offset: 5856,
66426642
key.length: 36,
66436643
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_SIGNED</decl.name>: <decl.var.type><ref.struct usr=\"s:s6UInt32V\">UInt32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66446644
},
66456645
{
66466646
key.kind: source.lang.swift.decl.var.global,
66476647
key.name: "FOO_MACRO_REDEF_1",
6648-
key.usr: "c:Foo.h@4477@macro@FOO_MACRO_REDEF_1",
6648+
key.usr: "c:Foo.h@4593@macro@FOO_MACRO_REDEF_1",
66496649
key.offset: 5893,
66506650
key.length: 36,
66516651
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_1</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
66526652
},
66536653
{
66546654
key.kind: source.lang.swift.decl.var.global,
66556655
key.name: "FOO_MACRO_REDEF_2",
6656-
key.usr: "c:Foo.h@4534@macro@FOO_MACRO_REDEF_2",
6656+
key.usr: "c:Foo.h@4650@macro@FOO_MACRO_REDEF_2",
66576657
key.offset: 5930,
66586658
key.length: 36,
66596659
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_MACRO_REDEF_2</decl.name>: <decl.var.type><ref.struct usr=\"s:s5Int32V\">Int32</ref.struct></decl.var.type> { <syntaxtype.keyword>get</syntaxtype.keyword> }</decl.var.global>"
@@ -6920,7 +6920,7 @@ var FooSubUnnamedEnumeratorA1: Int { get }
69206920
{
69216921
key.kind: source.lang.swift.decl.var.global,
69226922
key.name: "FOO_NIL",
6923-
key.usr: "c:Foo.h@5323@macro@FOO_NIL",
6923+
key.usr: "c:Foo.h@5439@macro@FOO_NIL",
69246924
key.offset: 6822,
69256925
key.length: 15,
69266926
key.fully_annotated_decl: "<decl.var.global><syntaxtype.keyword>var</syntaxtype.keyword> <decl.name>FOO_NIL</decl.name>: <decl.var.type><tuple>()</tuple></decl.var.type></decl.var.global>",

test/SourceKit/Inputs/libIDE-mock-sdk/Foo.framework/Headers/Foo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,14 @@ int redeclaredInMultipleModulesFunc1(int a);
143143

144144
@protocol FooProtocolDerived<FooProtocolBase>
145145
@end
146-
146+
#define NS_REFINED_FOR_SWIFT __attribute__((swift_private))
147147
@interface FooClassBase
148148
- (void) fooBaseInstanceFunc0;
149149
- (FooClassBase *) fooBaseInstanceFunc1:(id)anObject;
150150
- (instancetype) init __attribute__((objc_designated_initializer));
151151
- (instancetype) initWithFloat:(float)f;
152152
- (void) fooBaseInstanceFuncOverridden;
153-
153+
@property (readonly) int hiddenProp NS_REFINED_FOR_SWIFT;
154154
+ (void) fooBaseClassFunc0;
155155
@end
156156

test/SourceKit/InterfaceGen/Inputs/header.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
void doSomethingInHead(int arg);
2-
2+
#define NS_REFINED_FOR_SWIFT __attribute__((swift_private))
33
@interface BaseInHead
44
- (void)doIt:(int)arg;
5+
- (void)otherThing:(int)arg NS_REFINED_FOR_SWIFT;
56
@end
67

78
/// Awesome name.

0 commit comments

Comments
 (0)