@@ -194,6 +194,25 @@ extension Parser {
194
194
mutating func parseSimpleType(
195
195
allowMemberTypes: Bool = true ,
196
196
forAttributeName: Bool = false
197
+ ) -> RawTypeSyntax {
198
+ let tilde = self . consumeIfContextualPunctuator ( " ~ " , remapping: . prefixOperator)
199
+
200
+ let baseType = self . parseUnsuppressedSimpleType (
201
+ allowMemberTypes: allowMemberTypes,
202
+ forAttributeName: forAttributeName
203
+ )
204
+
205
+ guard let tilde else {
206
+ return baseType
207
+ }
208
+
209
+ return RawTypeSyntax ( RawSuppressedTypeSyntax ( withoutTilde: tilde, type: baseType, arena: self . arena)
210
+ )
211
+ }
212
+
213
+ mutating func parseUnsuppressedSimpleType(
214
+ allowMemberTypes: Bool = true ,
215
+ forAttributeName: Bool = false
197
216
) -> RawTypeSyntax {
198
217
enum TypeBaseStart : TokenSpecSet {
199
218
case `Self`
@@ -227,23 +246,6 @@ extension Parser {
227
246
}
228
247
}
229
248
230
- // Eat any '~' preceding the type.
231
- let maybeTilde = self . consumeIfContextualPunctuator ( " ~ " , remapping: . prefixOperator)
232
-
233
- // Wrap as a suppressed type if needed.
234
- func wrapInTilde( _ node: RawTypeSyntax ) -> RawTypeSyntax {
235
- if let tilde = maybeTilde {
236
- return RawTypeSyntax (
237
- RawSuppressedTypeSyntax (
238
- withoutTilde: tilde,
239
- type: node,
240
- arena: self . arena
241
- )
242
- )
243
- }
244
- return node
245
- }
246
-
247
249
var base : RawTypeSyntax
248
250
switch self . at ( anyIn: TypeBaseStart . self) ? . spec {
249
251
case . Self, . Any, . identifier:
@@ -255,7 +257,7 @@ extension Parser {
255
257
case . wildcard:
256
258
base = RawTypeSyntax ( self . parsePlaceholderType ( ) )
257
259
case nil :
258
- return wrapInTilde ( RawTypeSyntax ( RawMissingTypeSyntax ( arena: self . arena) ) )
260
+ return RawTypeSyntax ( RawMissingTypeSyntax ( arena: self . arena) )
259
261
}
260
262
261
263
var loopProgress = LoopProgressCondition ( )
@@ -332,8 +334,6 @@ extension Parser {
332
334
break
333
335
}
334
336
335
- base = wrapInTilde ( base)
336
-
337
337
return base
338
338
}
339
339
0 commit comments