Skip to content

Commit bb6e234

Browse files
committed
Eliminate special lexing and parsing of #warning and #error
1 parent 76ff1f3 commit bb6e234

File tree

5 files changed

+3
-83
lines changed

5 files changed

+3
-83
lines changed

Sources/SwiftParser/Declarations.swift

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,6 @@ extension Parser {
202202
return .decls(RawMemberDeclListSyntax(elements: elements, arena: parser.arena))
203203
}
204204
return RawDeclSyntax(directive)
205-
case (.poundWarningKeyword, _)?, (.poundErrorKeyword, _)?:
206-
return self.parsePoundDiagnosticDeclaration()
207205
case (.pound, _)?:
208206
// FIXME: If we can have attributes for macro expansions, handle this
209207
// via DeclarationStart.
@@ -2062,76 +2060,6 @@ extension Parser {
20622060
}
20632061

20642062
extension Parser {
2065-
enum PoundDiagnosticKind {
2066-
case error(poundError: RawTokenSyntax)
2067-
case warning(poundWarning: RawTokenSyntax)
2068-
}
2069-
2070-
@_spi(RawSyntax)
2071-
public mutating func parsePoundDiagnosticDeclaration() -> RawDeclSyntax {
2072-
enum ExpectedTokenKind: RawTokenKindSubset {
2073-
case poundErrorKeyword
2074-
case poundWarningKeyword
2075-
2076-
init?(lexeme: Lexer.Lexeme) {
2077-
switch lexeme.rawTokenKind {
2078-
case .poundErrorKeyword: self = .poundErrorKeyword
2079-
case .poundWarningKeyword: self = .poundWarningKeyword
2080-
default: return nil
2081-
}
2082-
}
2083-
2084-
var rawTokenKind: RawTokenKind {
2085-
switch self {
2086-
case .poundErrorKeyword: return .poundErrorKeyword
2087-
case .poundWarningKeyword: return .poundWarningKeyword
2088-
}
2089-
}
2090-
}
2091-
2092-
let directive: PoundDiagnosticKind
2093-
2094-
switch self.at(anyIn: ExpectedTokenKind.self) {
2095-
case (.poundErrorKeyword, let handle)?:
2096-
directive = .error(poundError: self.eat(handle))
2097-
case (.poundWarningKeyword, let handle)?:
2098-
directive = .warning(poundWarning: self.eat(handle))
2099-
case nil:
2100-
directive = .error(poundError: RawTokenSyntax(missing: .poundErrorKeyword, arena: self.arena))
2101-
}
2102-
2103-
let (unexpectedBeforeLeftParen, leftParen) = self.expect(.leftParen)
2104-
let stringLiteral = self.parseStringLiteral()
2105-
let (unexpectedBeforeRightParen, rightParen) = self.expect(.rightParen)
2106-
2107-
switch directive {
2108-
case .error(let tok):
2109-
return RawDeclSyntax(
2110-
RawPoundErrorDeclSyntax(
2111-
poundError: tok,
2112-
unexpectedBeforeLeftParen,
2113-
leftParen: leftParen,
2114-
message: stringLiteral,
2115-
unexpectedBeforeRightParen,
2116-
rightParen: rightParen,
2117-
arena: self.arena
2118-
)
2119-
)
2120-
case .warning(let tok):
2121-
return RawDeclSyntax(
2122-
RawPoundWarningDeclSyntax(
2123-
poundWarning: tok,
2124-
unexpectedBeforeLeftParen,
2125-
leftParen: leftParen,
2126-
message: stringLiteral,
2127-
unexpectedBeforeRightParen,
2128-
rightParen: rightParen,
2129-
arena: self.arena
2130-
)
2131-
)
2132-
}
2133-
}
2134-
21352063
/// Parse a macro declaration.
21362064
mutating func parseMacroDeclaration(
21372065
attrs: DeclAttributes,

Sources/SwiftParser/Lexer/Cursor.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1459,8 +1459,6 @@ extension Lexer.Cursor {
14591459
let kind: RawTokenKind
14601460
switch literal {
14611461
case "sourceLocation": kind = .poundSourceLocationKeyword
1462-
case "warning": kind = .poundWarningKeyword
1463-
case "error": kind = .poundErrorKeyword
14641462
case "if": kind = .poundIfKeyword
14651463
case "else": kind = .poundElseKeyword
14661464
case "elseif": kind = .poundElseifKeyword

Sources/SwiftParser/RawTokenKindSubset.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -471,15 +471,11 @@ enum OperatorLike: RawTokenKindSubset {
471471

472472
enum PoundDeclarationStart: RawTokenKindSubset {
473473
case poundIfKeyword
474-
case poundWarningKeyword
475-
case poundErrorKeyword
476474
case pound
477475

478476
init?(lexeme: Lexer.Lexeme) {
479477
switch lexeme.rawTokenKind {
480478
case .poundIfKeyword: self = .poundIfKeyword
481-
case .poundWarningKeyword: self = .poundWarningKeyword
482-
case .poundErrorKeyword: self = .poundErrorKeyword
483479
case .pound: self = .pound
484480
default: return nil
485481
}
@@ -488,8 +484,6 @@ enum PoundDeclarationStart: RawTokenKindSubset {
488484
var rawTokenKind: RawTokenKind {
489485
switch self {
490486
case .poundIfKeyword: return .poundIfKeyword
491-
case .poundWarningKeyword: return .poundWarningKeyword
492-
case .poundErrorKeyword: return .poundErrorKeyword
493487
case .pound: return .pound
494488
}
495489
}

Sources/SwiftParser/Statements.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -985,8 +985,8 @@ extension Parser {
985985
let expr: RawExprSyntax?
986986
if !self.at(any: [
987987
.rightBrace, .keyword(.case), .keyword(.default), .semicolon, .eof,
988-
.poundIfKeyword, .poundErrorKeyword, .poundWarningKeyword,
989-
.poundEndifKeyword, .poundElseKeyword, .poundElseifKeyword,
988+
.poundIfKeyword, .poundEndifKeyword, .poundElseKeyword,
989+
.poundElseifKeyword,
990990
])
991991
&& !self.atStartOfStatement() && !self.atStartOfDeclaration(preferPoundAsExpression: true)
992992
{

Tests/SwiftParserTest/translated/MultilinePoundDiagnosticArgRdar41154797Tests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ final class MultilinePoundDiagnosticArgRdar41154797Tests: XCTestCase {
2222
"""##,
2323
diagnostics: [
2424
DiagnosticSpec(message: #"expected '"""' to end string literal"#),
25-
DiagnosticSpec(message: "expected ')' to end '#error' directive"),
25+
DiagnosticSpec(message: "expected ')' to end pound literal declaration"),
2626
]
2727
)
2828
}

0 commit comments

Comments
 (0)