Skip to content

Commit f63a28b

Browse files
committed
Reduce SwiftParser’s public surface area
Make all `public` functions in SwiftParser that aren’t the parser’s entry functions either SPI or `internal`. Also make a lot of the `RawSyntax` SPI internal. Most of the public functions were never intended to be public.
1 parent a63faab commit f63a28b

39 files changed

+221
-289
lines changed

CodeGeneration/Sources/generate-swiftsyntax/templates/swiftparser/IsLexerClassifiedFile.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ let isLexerClassifiedFile = SourceFileSyntax(leadingTrivia: copyrightHeader) {
5353
/// Keywords are reserved unconditionally for use by Swift and may not
5454
/// appear as identifiers in any position without being escaped. For example,
5555
/// `class`, `func`, or `import`.
56+
@_spi(Diagnostics) @_spi(Testing)
5657
public var isLexerClassifiedKeyword: Bool
5758
"""
5859
) {

Sources/SwiftParser/Declarations.swift

Lines changed: 26 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,11 @@ extension TokenConsumer {
131131
}
132132

133133
extension Parser {
134-
@_spi(RawSyntax)
135-
public struct DeclAttributes {
136-
public var attributes: RawAttributeListSyntax?
137-
public var modifiers: RawModifierListSyntax?
134+
struct DeclAttributes {
135+
var attributes: RawAttributeListSyntax?
136+
var modifiers: RawModifierListSyntax?
138137

139-
public init(attributes: RawAttributeListSyntax?, modifiers: RawModifierListSyntax?) {
138+
init(attributes: RawAttributeListSyntax?, modifiers: RawModifierListSyntax?) {
140139
self.attributes = attributes
141140
self.modifiers = modifiers
142141
}
@@ -169,8 +168,7 @@ extension Parser {
169168
///
170169
/// If `inMemberDeclList` is `true`, we know that the next item must be a
171170
/// declaration and thus start with a keyword. This allows futher recovery.
172-
@_spi(RawSyntax)
173-
public mutating func parseDeclaration(inMemberDeclList: Bool = false) -> RawDeclSyntax {
171+
mutating func parseDeclaration(inMemberDeclList: Bool = false) -> RawDeclSyntax {
174172
switch self.at(anyIn: PoundDeclarationStart.self) {
175173
case (.poundIfKeyword, _)?:
176174
if self.withLookahead({ $0.consumeIfConfigOfAttributes() }) {
@@ -303,8 +301,7 @@ extension Parser {
303301
/// import-declaration → attributes? 'import' import-kind? import-path
304302
/// import-kind → 'typealias' | 'struct' | 'class' | 'enum' | 'protocol' | 'let' | 'var' | 'func'
305303
/// import-path → identifier | identifier '.' import-path
306-
@_spi(RawSyntax)
307-
public mutating func parseImportDeclaration(
304+
mutating func parseImportDeclaration(
308305
_ attrs: DeclAttributes,
309306
_ handle: RecoveryConsumptionHandle
310307
) -> RawImportDeclSyntax {
@@ -322,8 +319,7 @@ extension Parser {
322319
)
323320
}
324321

325-
@_spi(RawSyntax)
326-
public mutating func parseImportKind() -> RawTokenSyntax? {
322+
mutating func parseImportKind() -> RawTokenSyntax? {
327323
enum ImportKind: TokenSpecSet {
328324
case `typealias`
329325
case `struct`
@@ -368,8 +364,7 @@ extension Parser {
368364
return self.consume(ifAnyIn: ImportKind.self)
369365
}
370366

371-
@_spi(RawSyntax)
372-
public mutating func parseImportAccessPath() -> RawAccessPathSyntax {
367+
mutating func parseImportAccessPath() -> RawAccessPathSyntax {
373368
var elements = [RawAccessPathComponentSyntax]()
374369
var keepGoing: RawTokenSyntax? = nil
375370
var loopProgress = LoopProgressCondition()
@@ -398,8 +393,7 @@ extension Parser {
398393
/// extension-body → '{' extension-members? '}'
399394
/// extension-members → extension-member extension-members?
400395
/// extension-member → declaration | compiler-control-statement
401-
@_spi(RawSyntax)
402-
public mutating func parseExtensionDeclaration(
396+
mutating func parseExtensionDeclaration(
403397
_ attrs: DeclAttributes,
404398
_ handle: RecoveryConsumptionHandle
405399
) -> RawExtensionDeclSyntax {
@@ -451,8 +445,7 @@ extension Parser {
451445
)
452446
}
453447

454-
@_spi(RawSyntax)
455-
public mutating func parseGenericParameters() -> RawGenericParameterClauseSyntax {
448+
mutating func parseGenericParameters() -> RawGenericParameterClauseSyntax {
456449
if let remainingTokens = remainingTokensIfMaximumNestingLevelReached() {
457450
return RawGenericParameterClauseSyntax(
458451
remainingTokens,
@@ -614,8 +607,7 @@ extension Parser {
614607
}
615608
}
616609

617-
@_spi(RawSyntax)
618-
public mutating func parseGenericWhereClause() -> RawGenericWhereClauseSyntax {
610+
mutating func parseGenericWhereClause() -> RawGenericWhereClauseSyntax {
619611
let (unexpectedBeforeWhereKeyword, whereKeyword) = self.expect(.keyword(.where))
620612

621613
var elements = [RawGenericRequirementSyntax]()
@@ -779,8 +771,7 @@ extension Parser {
779771
}
780772

781773
extension Parser {
782-
@_spi(RawSyntax)
783-
public mutating func parseMemberDeclListItem() -> RawMemberDeclListItemSyntax? {
774+
mutating func parseMemberDeclListItem() -> RawMemberDeclListItemSyntax? {
784775
if let remainingTokens = remainingTokensIfMaximumNestingLevelReached() {
785776
let item = RawMemberDeclListItemSyntax(
786777
remainingTokens,
@@ -819,8 +810,7 @@ extension Parser {
819810
/// `introducer` is the `struct`, `class`, ... keyword that is the cause that the member decl block is being parsed.
820811
/// If the left brace is missing, its indentation will be used to judge whether a following `}` was
821812
/// indented to close this code block or a surrounding context. See `expectRightBrace`.
822-
@_spi(RawSyntax)
823-
public mutating func parseMemberDeclList(introducer: RawTokenSyntax? = nil) -> RawMemberDeclBlockSyntax {
813+
mutating func parseMemberDeclList(introducer: RawTokenSyntax? = nil) -> RawMemberDeclBlockSyntax {
824814
var elements = [RawMemberDeclListItemSyntax]()
825815
let (unexpectedBeforeLBrace, lbrace) = self.expect(.leftBrace)
826816
do {
@@ -878,8 +868,7 @@ extension Parser {
878868
/// raw-value-style-enum-case → enum-case-name raw-value-assignment?
879869
/// raw-value-assignment → = raw-value-literal
880870
/// raw-value-literal → numeric-literal | static-string-literal | boolean-literal
881-
@_spi(RawSyntax)
882-
public mutating func parseEnumCaseDeclaration(
871+
mutating func parseEnumCaseDeclaration(
883872
_ attrs: DeclAttributes,
884873
_ handle: RecoveryConsumptionHandle
885874
) -> RawEnumCaseDeclSyntax {
@@ -945,8 +934,7 @@ extension Parser {
945934
/// =======
946935
///
947936
/// protocol-associated-type-declaration → attributes? access-level-modifier? 'associatedtype' typealias-name type-inheritance-clause? typealias-assignment? generic-where-clause?
948-
@_spi(RawSyntax)
949-
public mutating func parseAssociatedTypeDeclaration(
937+
mutating func parseAssociatedTypeDeclaration(
950938
_ attrs: DeclAttributes,
951939
_ handle: RecoveryConsumptionHandle
952940
) -> RawAssociatedtypeDeclSyntax {
@@ -1036,8 +1024,7 @@ extension Parser {
10361024
/// initializer-head → attributes? declaration-modifiers? 'init' '?'
10371025
/// initializer-head → attributes? declaration-modifiers? 'init' '!'
10381026
/// initializer-body → code-block
1039-
@_spi(RawSyntax)
1040-
public mutating func parseInitializerDeclaration(
1027+
mutating func parseInitializerDeclaration(
10411028
_ attrs: DeclAttributes,
10421029
_ handle: RecoveryConsumptionHandle
10431030
) -> RawInitializerDeclSyntax {
@@ -1092,8 +1079,7 @@ extension Parser {
10921079
/// =======
10931080
///
10941081
/// deinitializer-declaration → attributes? 'deinit' code-block
1095-
@_spi(RawSyntax)
1096-
public mutating func parseDeinitializerDeclaration(
1082+
mutating func parseDeinitializerDeclaration(
10971083
_ attrs: DeclAttributes,
10981084
_ handle: RecoveryConsumptionHandle
10991085
) -> RawDeinitializerDeclSyntax {
@@ -1141,8 +1127,7 @@ extension Parser {
11411127
}
11421128

11431129
extension Parser {
1144-
@_spi(RawSyntax)
1145-
public mutating func parseFuncDeclaration(
1130+
mutating func parseFuncDeclaration(
11461131
_ attrs: DeclAttributes,
11471132
_ handle: RecoveryConsumptionHandle
11481133
) -> RawFunctionDeclSyntax {
@@ -1192,8 +1177,7 @@ extension Parser {
11921177
)
11931178
}
11941179

1195-
@_spi(RawSyntax)
1196-
public mutating func parseFunctionSignature(allowOutput: Bool = true) -> RawFunctionSignatureSyntax {
1180+
mutating func parseFunctionSignature(allowOutput: Bool = true) -> RawFunctionSignatureSyntax {
11971181
let input = self.parseParameterClause(RawParameterClauseSyntax.self) { parser in
11981182
parser.parseFunctionParameter()
11991183
}
@@ -1239,8 +1223,7 @@ extension Parser {
12391223
/// subscript-declaration → subscript-head subscript-result generic-where-clause? getter-setter-keyword-block
12401224
/// subscript-head → attributes? declaration-modifiers? 'subscript' generic-parameter-clause? parameter-clause
12411225
/// subscript-result → '->' attributes? type
1242-
@_spi(RawSyntax)
1243-
public mutating func parseSubscriptDeclaration(
1226+
mutating func parseSubscriptDeclaration(
12441227
_ attrs: DeclAttributes,
12451228
_ handle: RecoveryConsumptionHandle
12461229
) -> RawSubscriptDeclSyntax {
@@ -1320,8 +1303,7 @@ extension Parser {
13201303
/// }
13211304
/// }
13221305
/// ```
1323-
@_spi(RawSyntax)
1324-
public mutating func parseBindingDeclaration(
1306+
mutating func parseBindingDeclaration(
13251307
_ attrs: DeclAttributes,
13261308
_ handle: RecoveryConsumptionHandle,
13271309
inMemberDeclList: Bool = false
@@ -1543,8 +1525,7 @@ extension Parser {
15431525
/// getter-setter-block → code-block
15441526
/// getter-setter-block → { getter-clause setter-clause opt }
15451527
/// getter-setter-block → { setter-clause getter-clause }
1546-
@_spi(RawSyntax)
1547-
public mutating func parseGetSet() -> RawSubscriptDeclSyntax.Accessor {
1528+
mutating func parseGetSet() -> RawSubscriptDeclSyntax.Accessor {
15481529
// Parse getter and setter.
15491530
let unexpectedBeforeLBrace: RawUnexpectedNodesSyntax?
15501531
let lbrace: RawTokenSyntax
@@ -1618,8 +1599,7 @@ extension Parser {
16181599
/// typealias-declaration → attributes? access-level-modifier? 'typealias' typealias-name generic-parameter-clause? typealias-assignment
16191600
/// typealias-name → identifier
16201601
/// typealias-assignment → '=' type
1621-
@_spi(RawSyntax)
1622-
public mutating func parseTypealiasDeclaration(
1602+
mutating func parseTypealiasDeclaration(
16231603
_ attrs: DeclAttributes,
16241604
_ handle: RecoveryConsumptionHandle
16251605
) -> RawTypealiasDeclSyntax {
@@ -1685,8 +1665,7 @@ extension Parser {
16851665
/// postfix-operator-declaration → 'postfix' 'operator' operator
16861666
/// infix-operator-declaration → 'infix' 'operator' operator infix-operator-group?
16871667
/// infix-operator-group → ':' precedence-group-name
1688-
@_spi(RawSyntax)
1689-
public mutating func parseOperatorDeclaration(
1668+
mutating func parseOperatorDeclaration(
16901669
_ attrs: DeclAttributes,
16911670
_ handle: RecoveryConsumptionHandle
16921671
) -> RawOperatorDeclSyntax {
@@ -1803,8 +1782,7 @@ extension Parser {
18031782
///
18041783
/// precedence-group-names → precedence-group-name | precedence-group-name ',' precedence-group-names
18051784
/// precedence-group-name → identifier
1806-
@_spi(RawSyntax)
1807-
public mutating func parsePrecedenceGroupDeclaration(
1785+
mutating func parsePrecedenceGroupDeclaration(
18081786
_ attrs: DeclAttributes,
18091787
_ handle: RecoveryConsumptionHandle
18101788
) -> RawPrecedenceGroupDeclSyntax {
@@ -1831,8 +1809,7 @@ extension Parser {
18311809
)
18321810
}
18331811

1834-
@_spi(RawSyntax)
1835-
public mutating func parsePrecedenceGroupAttributeListSyntax() -> RawPrecedenceGroupAttributeListSyntax {
1812+
mutating func parsePrecedenceGroupAttributeListSyntax() -> RawPrecedenceGroupAttributeListSyntax {
18361813
enum LabelText: TokenSpecSet {
18371814
case associativity
18381815
case assignment

Sources/SwiftParser/Directives.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@ extension Parser {
8484
/// previous element.
8585
/// - syntax: A function that aggregates the parsed conditional elements
8686
/// into a syntax collection.
87-
@_spi(RawSyntax)
88-
public mutating func parsePoundIfDirective<Element: RawSyntaxNodeProtocol>(
87+
mutating func parsePoundIfDirective<Element: RawSyntaxNodeProtocol>(
8988
_ parseElement: (_ parser: inout Parser, _ isFirstElement: Bool) -> Element?,
9089
addSemicolonIfNeeded: (_ lastElement: Element, _ newItemAtStartOfLine: Bool, _ parser: inout Parser) -> Element? = { _, _, _ in nil },
9190
syntax: (inout Parser, [Element]) -> RawIfConfigClauseSyntax.Elements?
@@ -172,8 +171,7 @@ extension Parser {
172171
/// line-control-statement → '#sourceLocation' '(' ')'
173172
/// line-number → `A decimal integer greater than zero`
174173
/// file-path → static-string-literal
175-
@_spi(RawSyntax)
176-
public mutating func parsePoundSourceLocationDirective() -> RawPoundSourceLocationSyntax {
174+
mutating func parsePoundSourceLocationDirective() -> RawPoundSourceLocationSyntax {
177175
let line = self.consumeAnyToken()
178176
let (unexpectedBeforeLParen, lparen) = self.expect(.leftParen)
179177
let args: RawPoundSourceLocationArgsSyntax?

0 commit comments

Comments
 (0)