Skip to content

Commit 43b7a9f

Browse files
authored
Merge pull request #2103 from ahoppen/ahoppen/expr-flavor-refactoring
Small refactoring improvements around `ExprFlavor`
2 parents 0d6a210 + 536fd81 commit 43b7a9f

File tree

9 files changed

+110
-106
lines changed

9 files changed

+110
-106
lines changed

CodeGeneration/Sources/generate-swift-syntax/GenerateSwiftSyntax.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ struct GenerateSwiftSyntax: ParsableCommand {
8989
var fileSpecs: [GeneratedFileSpec] = [
9090
// SwiftParser
9191
GeneratedFileSpec(swiftParserGeneratedDir + ["IsLexerClassified.swift"], isLexerClassifiedFile),
92-
GeneratedFileSpec(swiftParserGeneratedDir + ["LayoutNodes+Parsable.swift"], parserEntryFile),
92+
GeneratedFileSpec(swiftParserGeneratedDir + ["LayoutNodes+Parsable.swift"], layoutNodesParsableFile),
9393
GeneratedFileSpec(swiftParserGeneratedDir + ["Parser+TokenSpecSet.swift"], parserTokenSpecSetFile),
9494
GeneratedFileSpec(swiftParserGeneratedDir + ["TokenSpecStaticMembers.swift"], tokenSpecStaticMembersFile),
9595

CodeGeneration/Sources/generate-swift-syntax/templates/swiftparser/ParserEntryFile.swift renamed to CodeGeneration/Sources/generate-swift-syntax/templates/swiftparser/LayoutNodesParsableFile.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import SwiftSyntaxBuilder
1515
import SyntaxSupport
1616
import Utils
1717

18-
let parserEntryFile = SourceFileSyntax(leadingTrivia: copyrightHeader) {
18+
let layoutNodesParsableFile = SourceFileSyntax(leadingTrivia: copyrightHeader) {
1919
DeclSyntax("@_spi(RawSyntax) import SwiftSyntax")
2020

2121
DeclSyntax(
@@ -74,5 +74,13 @@ let parserEntryFile = SourceFileSyntax(leadingTrivia: copyrightHeader) {
7474
}
7575
"""
7676
)
77+
78+
DeclSyntax(
79+
"""
80+
mutating func parseExpression() -> RawExprSyntax {
81+
return self.parseExpression(flavor: .basic, pattern: .none)
82+
}
83+
"""
84+
)
7785
}
7886
}

Sources/SwiftParser/Declarations.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,7 @@ extension Parser {
799799
// See if there's a raw value expression.
800800
let rawValue: RawInitializerClauseSyntax?
801801
if let eq = self.consume(if: .equal) {
802-
let value = self.parseExpression()
802+
let value = self.parseExpression(flavor: .basic, pattern: .none)
803803
rawValue = RawInitializerClauseSyntax(
804804
equal: eq,
805805
value: value,
@@ -1219,7 +1219,7 @@ extension Parser {
12191219
// Parse an initializer if present.
12201220
let initializer: RawInitializerClauseSyntax?
12211221
if let equal = self.consume(if: .equal) {
1222-
var value = self.parseExpression()
1222+
var value = self.parseExpression(flavor: .basic, pattern: .none)
12231223
if hasTryBeforeIntroducer && !value.is(RawTryExprSyntax.self) {
12241224
value = RawExprSyntax(
12251225
RawTryExprSyntax(
@@ -1250,8 +1250,7 @@ extension Parser {
12501250
arena: self.arena
12511251
)
12521252
),
1253-
.basic,
1254-
forDirective: false,
1253+
flavor: .basic,
12551254
pattern: .none
12561255
)
12571256
initializer = RawInitializerClauseSyntax(
@@ -1268,7 +1267,7 @@ extension Parser {
12681267
)
12691268
} else if self.atStartOfExpression(), !self.at(.leftBrace), !self.atStartOfLine {
12701269
let missingEqual = RawTokenSyntax(missing: .equal, arena: self.arena)
1271-
let expr = self.parseExpression()
1270+
let expr = self.parseExpression(flavor: .basic, pattern: .none)
12721271
initializer = RawInitializerClauseSyntax(
12731272
equal: missingEqual,
12741273
value: expr,
@@ -1849,7 +1848,7 @@ extension Parser {
18491848
// Initializer, if any.
18501849
let definition: RawInitializerClauseSyntax?
18511850
if let equal = self.consume(if: .equal) {
1852-
let expr = self.parseExpression()
1851+
let expr = self.parseExpression(flavor: .basic, pattern: .none)
18531852
definition = RawInitializerClauseSyntax(
18541853
equal: equal,
18551854
value: expr,
@@ -1933,10 +1932,10 @@ extension Parser {
19331932
let trailingClosure: RawClosureExprSyntax?
19341933
let additionalTrailingClosures: RawMultipleTrailingClosureElementListSyntax
19351934
if self.at(.leftBrace),
1936-
self.withLookahead({ $0.atValidTrailingClosure(.trailingClosure) })
1935+
self.withLookahead({ $0.atValidTrailingClosure(flavor: .basic) })
19371936
{
19381937
(trailingClosure, additionalTrailingClosures) =
1939-
self.parseTrailingClosures(.trailingClosure)
1938+
self.parseTrailingClosures(flavor: .basic)
19401939
} else {
19411940
trailingClosure = nil
19421941
additionalTrailingClosures = self.emptyCollection(RawMultipleTrailingClosureElementListSyntax.self)

Sources/SwiftParser/Directives.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ extension Parser {
7070

7171
// Parse #if
7272
let (unexpectedBeforePoundIf, poundIf) = self.expect(.poundIf)
73-
let condition = RawExprSyntax(self.parseSequenceExpression(.basic, forDirective: true))
73+
let condition = RawExprSyntax(self.parseSequenceExpression(flavor: .poundIfDirective))
7474
let unexpectedBetweenConditionAndElements = self.consumeRemainingTokenOnLine()
7575

7676
clauses.append(
@@ -95,14 +95,14 @@ extension Parser {
9595
switch match {
9696
case .poundElseif:
9797
(unexpectedBeforePound, pound) = self.eat(handle)
98-
condition = RawExprSyntax(self.parseSequenceExpression(.basic, forDirective: true))
98+
condition = RawExprSyntax(self.parseSequenceExpression(flavor: .poundIfDirective))
9999
unexpectedBetweenConditionAndElements = self.consumeRemainingTokenOnLine()
100100
case .poundElse:
101101
(unexpectedBeforePound, pound) = self.eat(handle)
102102
if let ifToken = self.consume(if: .init(.if, allowAtStartOfLine: false)) {
103103
unexpectedBeforePound = RawUnexpectedNodesSyntax(combining: unexpectedBeforePound, pound, ifToken, arena: self.arena)
104104
pound = self.missingToken(.poundElseif)
105-
condition = RawExprSyntax(self.parseSequenceExpression(.basic, forDirective: true))
105+
condition = RawExprSyntax(self.parseSequenceExpression(flavor: .poundIfDirective))
106106
} else {
107107
condition = nil
108108
}
@@ -115,7 +115,7 @@ extension Parser {
115115
}
116116
unexpectedBeforePound = RawUnexpectedNodesSyntax(combining: unexpectedBeforePound, pound, elif, arena: self.arena)
117117
pound = self.missingToken(.poundElseif)
118-
condition = RawExprSyntax(self.parseSequenceExpression(.basic, forDirective: true))
118+
condition = RawExprSyntax(self.parseSequenceExpression(flavor: .poundIfDirective))
119119
unexpectedBetweenConditionAndElements = self.consumeRemainingTokenOnLine()
120120
} else {
121121
break LOOP

0 commit comments

Comments
 (0)