From 083d32a63b082491651da5b5ec20721624b70a69 Mon Sep 17 00:00:00 2001 From: Michael Ilseman Date: Sun, 2 Apr 2023 17:36:53 -0600 Subject: [PATCH 1/2] Type checker workaround: adjust test --- Tests/RegexBuilderTests/RegexDSLTests.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Tests/RegexBuilderTests/RegexDSLTests.swift b/Tests/RegexBuilderTests/RegexDSLTests.swift index 0e529368a..b0a754fa5 100644 --- a/Tests/RegexBuilderTests/RegexDSLTests.swift +++ b/Tests/RegexBuilderTests/RegexDSLTests.swift @@ -1099,8 +1099,11 @@ class RegexDSLTests: XCTestCase { } let _: (Substring, Substring, Int, Double?).Type = type(of: regex3).RegexOutput.self - - let regex4 = Regex { + + // FIXME: Remove explicit type when type checker regression is fixed + let regex4: Regex<( + Substring, Substring, Substring, Substring, Substring? + )> = Regex { OneOrMore("a") Capture { OneOrMore { From ca92db7e5c4f0c68eb42d4adc46d86d0476449d9 Mon Sep 17 00:00:00 2001 From: Michael Ilseman Date: Mon, 3 Apr 2023 10:10:03 -0600 Subject: [PATCH 2/2] Further refactor to work around type checker regression --- Tests/RegexBuilderTests/RegexDSLTests.swift | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Tests/RegexBuilderTests/RegexDSLTests.swift b/Tests/RegexBuilderTests/RegexDSLTests.swift index b0a754fa5..5e85ad26c 100644 --- a/Tests/RegexBuilderTests/RegexDSLTests.swift +++ b/Tests/RegexBuilderTests/RegexDSLTests.swift @@ -1100,17 +1100,25 @@ class RegexDSLTests: XCTestCase { let _: (Substring, Substring, Int, Double?).Type = type(of: regex3).RegexOutput.self - // FIXME: Remove explicit type when type checker regression is fixed + // FIXME: Remove explicit type and `subregex1` and `subregex2` when type checker regression is fixed + let subregex1: Regex<(Substring, Substring?)> = Regex { + ZeroOrMore(Capture("d")) + } + let subregex2: Regex<( + Substring, Substring, Substring, Substring? + )> = Regex { + Capture(OneOrMore("b")) + Capture(ZeroOrMore("c")) + subregex1 + Optionally("e") + } let regex4: Regex<( Substring, Substring, Substring, Substring, Substring? )> = Regex { OneOrMore("a") Capture { OneOrMore { - Capture(OneOrMore("b")) - Capture(ZeroOrMore("c")) - ZeroOrMore(Capture("d")) - Optionally("e") + subregex2 } } }