Skip to content

Commit 637cb85

Browse files
authored
Merge pull request #866 from Azoy/integer-generics
Prepare for integer generics with new generic argument node
2 parents c1e7b6e + e6aa9ec commit 637cb85

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

Sources/SwiftFormat/Rules/UseShorthandTypeNames.swift

+18-14
Original file line numberDiff line numberDiff line change
@@ -47,24 +47,26 @@ public final class UseShorthandTypeNames: SyntaxFormatRule {
4747

4848
switch node.name.text {
4949
case "Array":
50-
guard let typeArgument = genericArgumentList.firstAndOnly else {
50+
guard case .type(let typeArgument) = genericArgumentList.firstAndOnly?.argument else {
5151
newNode = nil
5252
break
5353
}
5454
newNode = shorthandArrayType(
55-
element: typeArgument.argument,
55+
element: typeArgument,
5656
leadingTrivia: leadingTrivia,
5757
trailingTrivia: trailingTrivia
5858
)
5959

6060
case "Dictionary":
61-
guard let typeArguments = exactlyTwoChildren(of: genericArgumentList) else {
61+
guard let arguments = exactlyTwoChildren(of: genericArgumentList),
62+
case (.type(let type0Argument), .type(let type1Argument)) = (arguments.0.argument, arguments.1.argument)
63+
else {
6264
newNode = nil
6365
break
6466
}
6567
newNode = shorthandDictionaryType(
66-
key: typeArguments.0.argument,
67-
value: typeArguments.1.argument,
68+
key: type0Argument,
69+
value: type1Argument,
6870
leadingTrivia: leadingTrivia,
6971
trailingTrivia: trailingTrivia
7072
)
@@ -74,12 +76,12 @@ public final class UseShorthandTypeNames: SyntaxFormatRule {
7476
newNode = nil
7577
break
7678
}
77-
guard let typeArgument = genericArgumentList.firstAndOnly else {
79+
guard case .type(let typeArgument) = genericArgumentList.firstAndOnly?.argument else {
7880
newNode = nil
7981
break
8082
}
8183
newNode = shorthandOptionalType(
82-
wrapping: typeArgument.argument,
84+
wrapping: typeArgument,
8385
leadingTrivia: leadingTrivia,
8486
trailingTrivia: trailingTrivia
8587
)
@@ -137,38 +139,40 @@ public final class UseShorthandTypeNames: SyntaxFormatRule {
137139

138140
switch expression.baseName.text {
139141
case "Array":
140-
guard let typeArgument = genericArgumentList.firstAndOnly else {
142+
guard case .type(let typeArgument) = genericArgumentList.firstAndOnly?.argument else {
141143
newNode = nil
142144
break
143145
}
144146
let arrayTypeExpr = makeArrayTypeExpression(
145-
elementType: typeArgument.argument,
147+
elementType: typeArgument,
146148
leftSquare: TokenSyntax.leftSquareToken(leadingTrivia: leadingTrivia),
147149
rightSquare: TokenSyntax.rightSquareToken(trailingTrivia: trailingTrivia)
148150
)
149151
newNode = ExprSyntax(arrayTypeExpr)
150152

151153
case "Dictionary":
152-
guard let typeArguments = exactlyTwoChildren(of: genericArgumentList) else {
154+
guard let arguments = exactlyTwoChildren(of: genericArgumentList),
155+
case (.type(let type0Argument), .type(let type1Argument)) = (arguments.0.argument, arguments.1.argument)
156+
else {
153157
newNode = nil
154158
break
155159
}
156160
let dictTypeExpr = makeDictionaryTypeExpression(
157-
keyType: typeArguments.0.argument,
158-
valueType: typeArguments.1.argument,
161+
keyType: type0Argument,
162+
valueType: type1Argument,
159163
leftSquare: TokenSyntax.leftSquareToken(leadingTrivia: leadingTrivia),
160164
colon: TokenSyntax.colonToken(trailingTrivia: .spaces(1)),
161165
rightSquare: TokenSyntax.rightSquareToken(trailingTrivia: trailingTrivia)
162166
)
163167
newNode = ExprSyntax(dictTypeExpr)
164168

165169
case "Optional":
166-
guard let typeArgument = genericArgumentList.firstAndOnly else {
170+
guard case .type(let typeArgument) = genericArgumentList.firstAndOnly?.argument else {
167171
newNode = nil
168172
break
169173
}
170174
let optionalTypeExpr = makeOptionalTypeExpression(
171-
wrapping: typeArgument.argument,
175+
wrapping: typeArgument,
172176
leadingTrivia: leadingTrivia,
173177
questionMark: TokenSyntax.postfixQuestionMarkToken(trailingTrivia: trailingTrivia)
174178
)

0 commit comments

Comments
 (0)