Skip to content

Commit 520d83c

Browse files
committed
Don’t remap operators in DeclNameRef to identifiers
Fixes #833 Resolves rdar://100319818
1 parent c939287 commit 520d83c

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

Sources/SwiftParser/Names.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ extension Parser {
5757
if self.at(.identifier) || self.at(any: [.selfKeyword, .capitalSelfKeyword]) {
5858
ident = self.expectIdentifierWithoutRecovery()
5959
} else if flags.contains(.operators), let (_, _) = self.at(anyIn: Operator.self) {
60-
ident = self.consumeAnyToken(remapping: .identifier)
60+
ident = self.consumeAnyToken(remapping: .unspacedBinaryOperator)
6161
} else if flags.contains(.keywords) && self.currentToken.tokenKind.isKeyword {
6262
ident = self.consumeAnyToken(remapping: .identifier)
6363
} else {

Tests/SwiftParserTest/Assertions.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ func AssertDiagnostic<T: SyntaxProtocol>(
177177
func AssertParse(
178178
_ markedSource: String,
179179
substructure expectedSubstructure: Syntax? = nil,
180+
substructureAfterMarker: String = "START",
180181
diagnostics expectedDiagnostics: [DiagnosticSpec] = [],
181182
fixedSource expectedFixedSource: String? = nil,
182183
file: StaticString = #file,
@@ -185,6 +186,7 @@ func AssertParse(
185186
return AssertParse(markedSource,
186187
{ $0.parseSourceFile() },
187188
substructure: expectedSubstructure,
189+
substructureAfterMarker: substructureAfterMarker,
188190
diagnostics: expectedDiagnostics,
189191
fixedSource: expectedFixedSource,
190192
file: file,

Tests/SwiftParserTest/Expressions.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,4 +577,12 @@ final class ExpressionTests: XCTestCase {
577577
_ = ##""" foo # "# "##
578578
"""###)
579579
}
580+
581+
func testOperatorReference() {
582+
AssertParse(
583+
"reduce(0, #^PLUS^#+)",
584+
substructure: Syntax(TokenSyntax.unspacedBinaryOperator("+")),
585+
substructureAfterMarker: "PLUS"
586+
)
587+
}
580588
}

0 commit comments

Comments
 (0)