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