@@ -288,7 +288,7 @@ extension ASTGenVisitor {
288
288
// MARK: - AbstractStorageDecl
289
289
290
290
extension ASTGenVisitor {
291
- private func generate( accessorSpecifier specifier: TokenSyntax ) -> BridgedAccessorKind {
291
+ private func generate( accessorSpecifier specifier: TokenSyntax ) -> BridgedAccessorKind ? {
292
292
switch specifier. keywordKind {
293
293
case . get:
294
294
return . get
@@ -300,35 +300,33 @@ extension ASTGenVisitor {
300
300
return . willSet
301
301
case . unsafeAddress:
302
302
return . address
303
- case . addressWithOwner:
304
- return . address
305
- case . addressWithNativeOwner:
306
- return . address
307
303
case . unsafeMutableAddress:
308
304
return . mutableAddress
309
- case . mutableAddressWithOwner:
310
- return . mutableAddress
311
- case . mutableAddressWithNativeOwner:
312
- return . mutableAddress
313
305
case . _read:
314
306
return . read
315
307
case . _modify:
316
308
return . modify
317
309
case . `init`:
318
310
return . `init`
319
311
default :
320
- fatalError ( " Should have diagnosed this " )
312
+ self . diagnose ( Diagnostic ( node: specifier, message: UnknownAccessorSpecifierError ( specifier) ) )
313
+ return nil
321
314
}
322
315
}
323
316
324
317
private func generate(
325
318
accessorDecl node: AccessorDeclSyntax ,
326
319
for storage: BridgedAbstractStorageDecl
327
- ) -> BridgedAccessorDecl {
320
+ ) -> BridgedAccessorDecl ? {
321
+ guard let kind = self . generate ( accessorSpecifier: node. accessorSpecifier) else {
322
+ // TODO: We could potentially recover if this is the first accessor by treating
323
+ // it as an implicit getter.
324
+ return nil
325
+ }
328
326
let accessor = BridgedAccessorDecl . createParsed (
329
327
self . ctx,
330
328
declContext: self . declContext,
331
- kind: self . generate ( accessorSpecifier : node . accessorSpecifier ) ,
329
+ kind: kind ,
332
330
storage: storage,
333
331
declLoc: self . generateSourceLoc ( node. accessorSpecifier) ,
334
332
accessorKeywordLoc: self . generateSourceLoc ( node. accessorSpecifier) ,
@@ -358,7 +356,9 @@ extension ASTGenVisitor {
358
356
case . accessors( let accessors) :
359
357
return BridgedAccessorRecord (
360
358
lBraceLoc: leftBrace,
361
- accessors: accessors. lazy. map { self . generate ( accessorDecl: $0, for: storage) } . bridgedArray ( in: self ) ,
359
+ accessors: accessors. lazy. compactMap {
360
+ self . generate ( accessorDecl: $0, for: storage)
361
+ } . bridgedArray ( in: self ) ,
362
362
rBraceLoc: rightBrace
363
363
)
364
364
case . getter( let codeBlock) :
0 commit comments