Skip to content

Commit e2d04d6

Browse files
authored
Merge pull request #732 from DougGregor/parse-zero-arg-selector
Parse Objective-C zero-argument selectors (e.g., `retain`).
2 parents 23a9650 + 2fe7320 commit e2d04d6

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

Sources/SwiftParser/Attributes.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,16 @@ extension Parser {
451451

452452
if self.currentToken.isIdentifier || self.currentToken.isKeyword {
453453
let name = self.consumeAnyToken()
454+
455+
// If we hit a ')' we may have a zero-argument selector.
456+
if self.at(.rightParen) && elements.isEmpty {
457+
elements.append(RawObjCSelectorPieceSyntax(
458+
name: name,
459+
colon: nil,
460+
arena: self.arena))
461+
continue
462+
}
463+
454464
let (unexpectedBeforeColon, colon) = self.expect(.colon)
455465
elements.append(RawObjCSelectorPieceSyntax(
456466
name: name,

Tests/SwiftParserTest/Attributes.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,13 @@ final class AttributeTests: XCTestCase {
5757
]
5858
)
5959
}
60+
61+
func testObjCAttribute() {
62+
AssertParse(
63+
"""
64+
@objc(zeroArg)
65+
class A { }
66+
"""
67+
)
68+
}
6069
}

0 commit comments

Comments
 (0)