@@ -159,7 +159,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
159
159
modifiers: node. modifiers,
160
160
typeKeyword: node. classKeyword,
161
161
identifier: node. identifier,
162
- genericParameterClause : node. genericParameterClause,
162
+ genericParameterOrPrimaryAssociatedTypeClause : node. genericParameterClause. map ( Syntax . init ) ,
163
163
inheritanceClause: node. inheritanceClause,
164
164
genericWhereClause: node. genericWhereClause,
165
165
members: node. members)
@@ -173,7 +173,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
173
173
modifiers: node. modifiers,
174
174
typeKeyword: node. actorKeyword,
175
175
identifier: node. identifier,
176
- genericParameterClause : node. genericParameterClause,
176
+ genericParameterOrPrimaryAssociatedTypeClause : node. genericParameterClause. map ( Syntax . init ) ,
177
177
inheritanceClause: node. inheritanceClause,
178
178
genericWhereClause: node. genericWhereClause,
179
179
members: node. members)
@@ -187,7 +187,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
187
187
modifiers: node. modifiers,
188
188
typeKeyword: node. structKeyword,
189
189
identifier: node. identifier,
190
- genericParameterClause : node. genericParameterClause,
190
+ genericParameterOrPrimaryAssociatedTypeClause : node. genericParameterClause. map ( Syntax . init ) ,
191
191
inheritanceClause: node. inheritanceClause,
192
192
genericWhereClause: node. genericWhereClause,
193
193
members: node. members)
@@ -201,7 +201,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
201
201
modifiers: node. modifiers,
202
202
typeKeyword: node. enumKeyword,
203
203
identifier: node. identifier,
204
- genericParameterClause : node. genericParameters,
204
+ genericParameterOrPrimaryAssociatedTypeClause : node. genericParameters. map ( Syntax . init ) ,
205
205
inheritanceClause: node. inheritanceClause,
206
206
genericWhereClause: node. genericWhereClause,
207
207
members: node. members)
@@ -215,7 +215,8 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
215
215
modifiers: node. modifiers,
216
216
typeKeyword: node. protocolKeyword,
217
217
identifier: node. identifier,
218
- genericParameterClause: nil ,
218
+ genericParameterOrPrimaryAssociatedTypeClause:
219
+ node. primaryAssociatedTypeClause. map ( Syntax . init) ,
219
220
inheritanceClause: node. inheritanceClause,
220
221
genericWhereClause: node. genericWhereClause,
221
222
members: node. members)
@@ -232,7 +233,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
232
233
modifiers: node. modifiers,
233
234
typeKeyword: node. extensionKeyword,
234
235
identifier: lastTokenOfExtendedType,
235
- genericParameterClause : nil ,
236
+ genericParameterOrPrimaryAssociatedTypeClause : nil ,
236
237
inheritanceClause: node. inheritanceClause,
237
238
genericWhereClause: node. genericWhereClause,
238
239
members: node. members)
@@ -247,7 +248,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
247
248
modifiers: ModifierListSyntax ? ,
248
249
typeKeyword: TokenSyntax ,
249
250
identifier: TokenSyntax ,
250
- genericParameterClause : GenericParameterClauseSyntax ? ,
251
+ genericParameterOrPrimaryAssociatedTypeClause : Syntax ? ,
251
252
inheritanceClause: TypeInheritanceClauseSyntax ? ,
252
253
genericWhereClause: GenericWhereClauseSyntax ? ,
253
254
members: MemberDeclBlockSyntax
@@ -269,7 +270,8 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
269
270
after ( members. leftBrace, tokens: . close)
270
271
}
271
272
272
- let lastTokenBeforeBrace = inheritanceClause? . colon ?? genericParameterClause? . rightAngleBracket
273
+ let lastTokenBeforeBrace = inheritanceClause? . colon
274
+ ?? genericParameterOrPrimaryAssociatedTypeClause? . lastToken
273
275
?? identifier
274
276
after ( lastTokenBeforeBrace, tokens: . close)
275
277
@@ -1484,6 +1486,12 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
1484
1486
return . visitChildren
1485
1487
}
1486
1488
1489
+ override func visit( _ node: PrimaryAssociatedTypeClauseSyntax ) -> SyntaxVisitorContinueKind {
1490
+ after ( node. leftAngleBracket, tokens: . break( . open, size: 0 ) , . open( argumentListConsistency ( ) ) )
1491
+ before ( node. rightAngleBracket, tokens: . break( . close, size: 0 ) , . close)
1492
+ return . visitChildren
1493
+ }
1494
+
1487
1495
override func visit( _ node: ArrayTypeSyntax ) -> SyntaxVisitorContinueKind {
1488
1496
return . visitChildren
1489
1497
}
@@ -2098,6 +2106,16 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
2098
2106
return . visitChildren
2099
2107
}
2100
2108
2109
+ override func visit( _ node: PrimaryAssociatedTypeSyntax ) -> SyntaxVisitorContinueKind {
2110
+ before ( node. firstToken, tokens: . open)
2111
+ if let trailingComma = node. trailingComma {
2112
+ after ( trailingComma, tokens: . close, . break( . same) )
2113
+ } else {
2114
+ after ( node. lastToken, tokens: . close)
2115
+ }
2116
+ return . visitChildren
2117
+ }
2118
+
2101
2119
override func visit( _ node: PoundWarningDeclSyntax ) -> SyntaxVisitorContinueKind {
2102
2120
return . visitChildren
2103
2121
}
0 commit comments