Skip to content

Commit b33cf73

Browse files
committed
Unroll reduces to statements in macro expansion.
1 parent 4f0e29a commit b33cf73

File tree

7 files changed

+311
-93
lines changed

7 files changed

+311
-93
lines changed

Package.resolved

Lines changed: 1 addition & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/StructuredQueriesMacros/TableMacro.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,11 @@ extension TableMacro: ExtensionMacro {
868868
public typealias From = Swift.Never
869869
""",
870870
])
871-
let columnWidth: ExprSyntax = "[\(columnWidths, separator: ", ")].reduce(0, +)"
871+
let columnWidth: ExprSyntax = """
872+
var columnWidth = 0
873+
columnWidth += \(columnWidths, separator: "; columnWidth += ")
874+
return columnWidth
875+
"""
872876

873877
return [
874878
DeclSyntax(

Sources/StructuredQueriesSQLiteMacros/DatabaseFunctionMacro.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ extension DatabaseFunctionMacro: PeerMacro {
228228
public typealias Output = \(representableOutputType)
229229
public let name = \(databaseFunctionName)
230230
public var argumentCount: Int? { \
231-
[\(raw: argumentCount.map { "\($0)._columnWidth" }.joined(separator: ", "))].reduce(0, +) \
231+
var argumentCount = 0
232+
argumentCount += \(raw: argumentCount.isEmpty ? "0" : argumentCount.map { "\($0)._columnWidth" }.joined(separator: "; argumentCount += "))
233+
return argumentCount
232234
}
233235
public let isDeterministic = \(raw: isDeterministic)
234236
public let body: \(raw: bodyType)

Tests/StructuredQueriesMacrosTests/DatabaseFunctionMacroTests.swift

Lines changed: 67 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ extension SnapshotTests {
2828
public typealias Output = Date
2929
public let name = "currentDate"
3030
public var argumentCount: Int? {
31-
[].reduce(0, +)
31+
var argumentCount = 0
32+
argumentCount += 0
33+
return argumentCount
3234
}
3335
public let isDeterministic = false
3436
public let body: () -> Date
@@ -80,7 +82,9 @@ extension SnapshotTests {
8082
public typealias Output = Date
8183
public let name = "current_date"
8284
public var argumentCount: Int? {
83-
[].reduce(0, +)
85+
var argumentCount = 0
86+
argumentCount += 0
87+
return argumentCount
8488
}
8589
public let isDeterministic = false
8690
public let body: () -> Date
@@ -132,7 +136,9 @@ extension SnapshotTests {
132136
public typealias Output = [String].JSONRepresentation
133137
public let name = "jsonCapitalize"
134138
public var argumentCount: Int? {
135-
[[String].JSONRepresentation._columnWidth].reduce(0, +)
139+
var argumentCount = 0
140+
argumentCount += [String].JSONRepresentation._columnWidth
141+
return argumentCount
136142
}
137143
public let isDeterministic = false
138144
public let body: ([String]) -> [String]
@@ -188,7 +194,9 @@ extension SnapshotTests {
188194
public typealias Output = Int
189195
public let name = "fortyTwo"
190196
public var argumentCount: Int? {
191-
[].reduce(0, +)
197+
var argumentCount = 0
198+
argumentCount += 0
199+
return argumentCount
192200
}
193201
public let isDeterministic = true
194202
public let body: () -> Int
@@ -240,7 +248,9 @@ extension SnapshotTests {
240248
public typealias Output = Date?
241249
public let name = "currentDate"
242250
public var argumentCount: Int? {
243-
[String._columnWidth].reduce(0, +)
251+
var argumentCount = 0
252+
argumentCount += String._columnWidth
253+
return argumentCount
244254
}
245255
public let isDeterministic = false
246256
public let body: (String) -> Date?
@@ -296,7 +306,9 @@ extension SnapshotTests {
296306
public typealias Output = Date?
297307
public let name = "currentDate"
298308
public var argumentCount: Int? {
299-
[String._columnWidth].reduce(0, +)
309+
var argumentCount = 0
310+
argumentCount += String._columnWidth
311+
return argumentCount
300312
}
301313
public let isDeterministic = false
302314
public let body: (String) -> Date?
@@ -352,7 +364,9 @@ extension SnapshotTests {
352364
public typealias Output = Date?
353365
public let name = "currentDate"
354366
public var argumentCount: Int? {
355-
[String._columnWidth].reduce(0, +)
367+
var argumentCount = 0
368+
argumentCount += String._columnWidth
369+
return argumentCount
356370
}
357371
public let isDeterministic = false
358372
public let body: (String) -> Date?
@@ -408,7 +422,9 @@ extension SnapshotTests {
408422
public typealias Output = Date?
409423
public let name = "currentDate"
410424
public var argumentCount: Int? {
411-
[String._columnWidth].reduce(0, +)
425+
var argumentCount = 0
426+
argumentCount += String._columnWidth
427+
return argumentCount
412428
}
413429
public let isDeterministic = false
414430
public let body: (String) -> Date?
@@ -464,7 +480,10 @@ extension SnapshotTests {
464480
public typealias Output = String
465481
public let name = "concat"
466482
public var argumentCount: Int? {
467-
[String._columnWidth, String._columnWidth].reduce(0, +)
483+
var argumentCount = 0
484+
argumentCount += String._columnWidth;
485+
argumentCount += String._columnWidth
486+
return argumentCount
468487
}
469488
public let isDeterministic = false
470489
public let body: (String, String) -> String
@@ -541,7 +560,9 @@ extension SnapshotTests {
541560
public typealias Output = Date?
542561
public let name = "currentDate"
543562
public var argumentCount: Int? {
544-
[String?._columnWidth].reduce(0, +)
563+
var argumentCount = 0
564+
argumentCount += String?._columnWidth
565+
return argumentCount
545566
}
546567
public let isDeterministic = false
547568
public let body: (String?) -> Date?
@@ -597,7 +618,9 @@ extension SnapshotTests {
597618
public typealias Output = Date
598619
public let name = "currentDate"
599620
public var argumentCount: Int? {
600-
[].reduce(0, +)
621+
var argumentCount = 0
622+
argumentCount += 0
623+
return argumentCount
601624
}
602625
public let isDeterministic = false
603626
public let body: () throws -> Date
@@ -653,7 +676,9 @@ extension SnapshotTests {
653676
public typealias Output = Date
654677
public let name = "currentDate"
655678
public var argumentCount: Int? {
656-
[].reduce(0, +)
679+
var argumentCount = 0
680+
argumentCount += 0
681+
return argumentCount
657682
}
658683
public let isDeterministic = false
659684
public let body: () throws(MyError) -> Date
@@ -709,7 +734,9 @@ extension SnapshotTests {
709734
public typealias Output = Date
710735
public let name = "currentDate"
711736
public var argumentCount: Int? {
712-
[].reduce(0, +)
737+
var argumentCount = 0
738+
argumentCount += 0
739+
return argumentCount
713740
}
714741
public let isDeterministic = false
715742
public let body: () -> Date
@@ -761,7 +788,9 @@ extension SnapshotTests {
761788
public typealias Output = Date
762789
public let name = "currentDate"
763790
public var argumentCount: Int? {
764-
[].reduce(0, +)
791+
var argumentCount = 0
792+
argumentCount += 0
793+
return argumentCount
765794
}
766795
public let isDeterministic = false
767796
public let body: () -> Date
@@ -836,7 +865,9 @@ extension SnapshotTests {
836865
public typealias Output = Date
837866
public let name = "currentDate"
838867
public var argumentCount: Int? {
839-
[].reduce(0, +)
868+
var argumentCount = 0
869+
argumentCount += 0
870+
return argumentCount
840871
}
841872
public let isDeterministic = false
842873
public let body: () -> Date
@@ -888,7 +919,9 @@ extension SnapshotTests {
888919
public typealias Output = Int
889920
public let name = "default"
890921
public var argumentCount: Int? {
891-
[].reduce(0, +)
922+
var argumentCount = 0
923+
argumentCount += 0
924+
return argumentCount
892925
}
893926
public let isDeterministic = false
894927
public let body: () -> Int
@@ -940,7 +973,9 @@ extension SnapshotTests {
940973
public typealias Output = Swift.Void
941974
public let name = "void"
942975
public var argumentCount: Int? {
943-
[].reduce(0, +)
976+
var argumentCount = 0
977+
argumentCount += 0
978+
return argumentCount
944979
}
945980
public let isDeterministic = false
946981
public let body: () -> Swift.Void
@@ -987,7 +1022,9 @@ extension SnapshotTests {
9871022
public typealias Output = Swift.Void
9881023
public let name = "void"
9891024
public var argumentCount: Int? {
990-
[].reduce(0, +)
1025+
var argumentCount = 0
1026+
argumentCount += 0
1027+
return argumentCount
9911028
}
9921029
public let isDeterministic = false
9931030
public let body: () throws -> Swift.Void
@@ -1047,7 +1084,10 @@ extension SnapshotTests {
10471084
public typealias Output = Swift.Void
10481085
public let name = "min"
10491086
public var argumentCount: Int? {
1050-
[Int._columnWidth, Int._columnWidth].reduce(0, +)
1087+
var argumentCount = 0
1088+
argumentCount += Int._columnWidth;
1089+
argumentCount += Int._columnWidth
1090+
return argumentCount
10511091
}
10521092
public let isDeterministic = false
10531093
public let body: (Int, Int) -> Swift.Void
@@ -1111,7 +1151,10 @@ extension SnapshotTests {
11111151
public typealias Output = Swift.Void
11121152
public let name = "min"
11131153
public var argumentCount: Int? {
1114-
[Int._columnWidth, Int._columnWidth].reduce(0, +)
1154+
var argumentCount = 0
1155+
argumentCount += Int._columnWidth;
1156+
argumentCount += Int._columnWidth
1157+
return argumentCount
11151158
}
11161159
public let isDeterministic = false
11171160
public let body: (Int, Int) -> Swift.Void
@@ -1172,7 +1215,10 @@ extension SnapshotTests {
11721215
public typealias Output = Bool
11731216
public let name = "isValid"
11741217
public var argumentCount: Int? {
1175-
[Reminder._columnWidth, Bool._columnWidth].reduce(0, +)
1218+
var argumentCount = 0
1219+
argumentCount += Reminder._columnWidth;
1220+
argumentCount += Bool._columnWidth
1221+
return argumentCount
11761222
}
11771223
public let isDeterministic = false
11781224
public let body: (Reminder, Bool) -> Bool

0 commit comments

Comments
 (0)