@@ -1842,6 +1842,8 @@ fileprivate let regexWithCapture = #/:(\d+):/#
1842
1842
fileprivate let regexWithLabeledCapture = #/:(?<number>\d+):/#
1843
1843
@available ( SwiftStdlib 5 . 7 , * )
1844
1844
fileprivate let regexWithNonCapture = #/:(?:\d+):/#
1845
+ @available ( SwiftStdlib 5 . 7 , * )
1846
+ fileprivate let regexWithMultipleCaptures = #/:(\d+):(.+):(\d+):/#
1845
1847
1846
1848
@available ( SwiftStdlib 5 . 7 , * )
1847
1849
extension RegexDSLTests {
@@ -2029,6 +2031,94 @@ extension RegexDSLTests {
2029
2031
XCTAssertEqual ( match. output. 2 , " b " )
2030
2032
XCTAssertNil ( match. output. 3 )
2031
2033
}
2034
+
2035
+ func testVariadicNesting_Compilation( ) {
2036
+ let x_sOCs৲৲_x = 1
2037
+ let regex_OC = Regex { // sOCsco
2038
+ " a "
2039
+ Optionally {
2040
+ Capture { " b " }
2041
+ }
2042
+ }
2043
+ let _: Regex < ( Substring , Substring ? ) > = regex_OC
2044
+
2045
+ let regex_OCC = Regex {
2046
+ " a "
2047
+ Optionally {
2048
+ Capture { " b " }
2049
+ Capture { " c " }
2050
+ }
2051
+ }
2052
+ let _: Regex < ( Substring , Substring ? , Substring ? ) > = regex_OCC
2053
+
2054
+ let regex_O_OC = Regex {
2055
+ Optionally {
2056
+ regex_OC
2057
+ }
2058
+ }
2059
+ let _: Regex < ( Substring , Substring ? ? ) > = regex_O_OC
2060
+
2061
+ let regex_O_OCC = Regex {
2062
+ Optionally {
2063
+ regex_OCC
2064
+ }
2065
+ }
2066
+ let _: Regex < ( Substring , Substring ? ? , Substring ? ? ) > = regex_O_OCC
2067
+
2068
+ let regex_O_OC_OC = Regex {
2069
+ Optionally {
2070
+ regex_OC
2071
+ regex_OC
2072
+ }
2073
+ }
2074
+ let _: Regex < ( Substring , Substring ? ? , Substring ? ? ) > = regex_O_OC_OC
2075
+
2076
+ let regex_O_OCC_OC = Regex {
2077
+ Optionally {
2078
+ regex_OCC
2079
+ regex_OC
2080
+ }
2081
+ }
2082
+ let _: Regex < ( Substring , Substring ? ? , Substring ? ? , Substring ? ? ) > = regex_O_OCC_OC
2083
+
2084
+ let regex_O_OCC_OCC = Regex {
2085
+ Optionally {
2086
+ regex_OCC
2087
+ regex_OCC
2088
+ }
2089
+ }
2090
+ let _: Regex < ( Substring , Substring ? ? , Substring ? ? , Substring ? ? , Substring ? ? ) > = regex_O_OCC_OCC
2091
+
2092
+ let regexChoices_CCOC = Regex {
2093
+ ChoiceOf {
2094
+ Capture { " A " }
2095
+ " b "
2096
+ " c "
2097
+ Capture { " D " }
2098
+ Optionally {
2099
+ Capture {
2100
+ " E "
2101
+ }
2102
+ }
2103
+ }
2104
+ }
2105
+ let _: Regex < ( Substring , Substring ? , Substring ? , Substring ? ? ) > = regexChoices_CCOC
2106
+
2107
+ let regex_Zr3Mr3MOr3e = Regex {
2108
+ ZeroOrMore {
2109
+ regexWithMultipleCaptures
2110
+ }
2111
+ OneOrMore {
2112
+ regexWithMultipleCaptures
2113
+ }
2114
+ OneOrMore {
2115
+ Optionally {
2116
+ regexWithMultipleCaptures
2117
+ }
2118
+ }
2119
+ }
2120
+ let _: Regex < ( Substring , Substring ? , Substring ? , Substring ? , Substring , Substring , Substring , Substring ? , Substring ? , Substring ? ) > = regex_Zr3Mr3MOr3
2121
+ }
2032
2122
}
2033
2123
2034
2124
extension Unicode . Scalar {
0 commit comments