@@ -60,6 +60,8 @@ extension Parser {
60
60
}
61
61
case ( . declarationModifier( . unowned) , let handle) ? :
62
62
elements. append ( self . parseUnownedModifier ( handle) )
63
+ case ( . declarationModifier( . nonisolated) , let handle) ? :
64
+ elements. append ( parseNonisolatedModifier ( handle) )
63
65
case ( . declarationModifier( . final) , let handle) ? ,
64
66
( . declarationModifier( . required) , let handle) ? ,
65
67
( . declarationModifier( . optional) , let handle) ? ,
@@ -79,7 +81,6 @@ extension Parser {
79
81
( . declarationModifier( . indirect) , let handle) ? ,
80
82
( . declarationModifier( . isolated) , let handle) ? ,
81
83
( . declarationModifier( . async ) , let handle) ? ,
82
- ( . declarationModifier( . nonisolated) , let handle) ? ,
83
84
( . declarationModifier( . distributed) , let handle) ? ,
84
85
( . declarationModifier( . _const) , let handle) ? ,
85
86
( . declarationModifier( . _local) , let handle) ? ,
@@ -98,9 +99,9 @@ extension Parser {
98
99
}
99
100
100
101
extension Parser {
101
- mutating func parseModifierDetail( ) -> RawDeclModifierDetailSyntax {
102
+ mutating func parseModifierDetail( _ keyword : Keyword ) -> RawDeclModifierDetailSyntax {
102
103
let ( unexpectedBeforeLeftParen, leftParen) = self . expect ( . leftParen)
103
- let ( unexpectedBeforeDetailToken, detailToken) = self . expect ( . identifier, TokenSpec ( . set , remapping: . identifier) , default: . identifier)
104
+ let ( unexpectedBeforeDetailToken, detailToken) = self . expect ( . identifier, TokenSpec ( keyword , remapping: . identifier) , default: . identifier)
104
105
let ( unexpectedBeforeRightParen, rightParen) = self . expect ( . rightParen)
105
106
return RawDeclModifierDetailSyntax (
106
107
unexpectedBeforeLeftParen,
@@ -118,7 +119,7 @@ extension Parser {
118
119
119
120
let detail : RawDeclModifierDetailSyntax ?
120
121
if self . at ( . leftParen) {
121
- detail = self . parseModifierDetail ( )
122
+ detail = self . parseModifierDetail ( . set )
122
123
} else {
123
124
detail = nil
124
125
}
@@ -217,4 +218,22 @@ extension Parser {
217
218
arena: self . arena
218
219
)
219
220
}
221
+
222
+ mutating func parseNonisolatedModifier( _ handle: RecoveryConsumptionHandle ) -> RawDeclModifierSyntax {
223
+ let ( unexpectedBeforeKeyword, keyword) = self . eat ( handle)
224
+
225
+ let detail : RawDeclModifierDetailSyntax ?
226
+ if self . at ( . leftParen) {
227
+ detail = self . parseModifierDetail ( . unsafe)
228
+ } else {
229
+ detail = nil
230
+ }
231
+
232
+ return RawDeclModifierSyntax (
233
+ unexpectedBeforeKeyword,
234
+ name: keyword,
235
+ detail: detail,
236
+ arena: self . arena
237
+ )
238
+ }
220
239
}
0 commit comments