@@ -62,6 +62,7 @@ extension Parser {
62
62
case exclusivity
63
63
case inline
64
64
case objc
65
+ case Sendable
65
66
case transpose
66
67
67
68
init ? ( lexeme: Lexer . Lexeme , experimentalFeatures: Parser . ExperimentalFeatures ) {
@@ -97,6 +98,7 @@ extension Parser {
97
98
case TokenSpec ( . exclusivity) : self = . exclusivity
98
99
case TokenSpec ( . inline) : self = . inline
99
100
case TokenSpec ( . objc) : self = . objc
101
+ case TokenSpec ( . Sendable) : self = . Sendable
100
102
case TokenSpec ( . transpose) : self = . transpose
101
103
default :
102
104
return nil
@@ -136,6 +138,7 @@ extension Parser {
136
138
case . exclusivity: return . keyword( . exclusivity)
137
139
case . inline: return . keyword( . inline)
138
140
case . objc: return . keyword( . objc)
141
+ case . Sendable: return . keyword( . Sendable)
139
142
case . transpose: return . keyword( . transpose)
140
143
}
141
144
}
@@ -163,6 +166,7 @@ extension Parser {
163
166
case required
164
167
case customAttribute
165
168
case optional
169
+ case noArgument
166
170
}
167
171
168
172
mutating func parseAttribute(
@@ -179,6 +183,8 @@ extension Parser {
179
183
shouldParseArgument = self . withLookahead { $0. atCustomAttributeArgument ( ) } && self . at ( TokenSpec ( . leftParen, allowAtStartOfLine: false ) )
180
184
case . optional:
181
185
shouldParseArgument = self . at ( . leftParen)
186
+ case . noArgument:
187
+ shouldParseArgument = false
182
188
}
183
189
if shouldParseArgument {
184
190
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
@@ -336,6 +342,10 @@ extension Parser {
336
342
arena: self . arena
337
343
)
338
344
)
345
+ case . Sendable:
346
+ return parseAttribute ( argumentMode: . noArgument) { parser in
347
+ preconditionFailure ( " Sendable has no argument " )
348
+ }
339
349
case nil :
340
350
return parseAttribute ( argumentMode: . customAttribute) { parser in
341
351
let arguments = parser. parseArgumentListElements ( pattern: . none)
0 commit comments