Swift: Add another test case.

This commit is contained in:
Geoffrey White
2023-07-14 18:15:34 +01:00
parent f8b8c67813
commit 84f592b8a1
2 changed files with 142 additions and 138 deletions

View File

@@ -6327,84 +6327,72 @@ redos_variants.swift:
# 579| [RegExpConstant, RegExpNormalChar] c
regex.swift:
# 110| [RegExpDot] .
# 111| [RegExpDot] .
# 110| [RegExpStar] .*
# 111| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 132| [RegExpDot] .
# 133| [RegExpDot] .
# 132| [RegExpStar] .*
# 133| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 149| [RegExpDot] .
# 150| [RegExpDot] .
# 149| [RegExpStar] .*
# 150| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 149| [RegExpDot] .
# 150| [RegExpDot] .
# 149| [RegExpPlus] .+
# 150| [RegExpPlus] .+
#-----| 0 -> [RegExpDot] .
# 156| [RegExpGroup] ([\w.]+)
# 157| [RegExpGroup] ([\w.]+)
#-----| 0 -> [RegExpPlus] [\w.]+
# 156| [RegExpStar] ([\w.]+)*
# 157| [RegExpStar] ([\w.]+)*
#-----| 0 -> [RegExpGroup] ([\w.]+)
# 156| [RegExpCharacterClass] [\w.]
# 157| [RegExpCharacterClass] [\w.]
#-----| 0 -> [RegExpCharacterClassEscape] \w
#-----| 1 -> [RegExpConstant, RegExpNormalChar] .
# 156| [RegExpPlus] [\w.]+
# 157| [RegExpPlus] [\w.]+
#-----| 0 -> [RegExpCharacterClass] [\w.]
# 156| [RegExpCharacterClassEscape] \w
# 157| [RegExpCharacterClassEscape] \w
# 156| [RegExpConstant, RegExpNormalChar] .
# 157| [RegExpConstant, RegExpNormalChar] .
# 163| [RegExpConstant, RegExpNormalChar]
# 163|
# 164| [RegExpConstant, RegExpEscape] \n
# 164| [RegExpConstant, RegExpNormalChar]
# 164|
# 165| [RegExpConstant, RegExpEscape] \n
# 175| [RegExpConstant, RegExpNormalChar] aa
# 166| [RegExpConstant, RegExpEscape] \n
# 175| [RegExpAlt] aa|bb
# 176| [RegExpConstant, RegExpNormalChar] aa
# 176| [RegExpAlt] aa|bb
#-----| 0 -> [RegExpConstant, RegExpNormalChar] aa
#-----| 1 -> [RegExpConstant, RegExpNormalChar] bb
# 175| [RegExpConstant, RegExpNormalChar] bb
# 176| [RegExpConstant, RegExpNormalChar] bb
# 179| [RegExpConstant, RegExpNormalChar] aa
# 180| [RegExpConstant, RegExpNormalChar] aa
# 179| [RegExpAlt] aa|
# 179| bb
# 180| [RegExpAlt] aa|
# 180| bb
#-----| 0 -> [RegExpConstant, RegExpNormalChar] aa
#-----| 1 -> [RegExpConstant, RegExpNormalChar]
#-----| bb
# 179| [RegExpConstant, RegExpNormalChar]
# 179| bb
# 180| [RegExpConstant, RegExpNormalChar]
# 180| bb
# 187| [RegExpCharacterClass] [a-z]
# 188| [RegExpCharacterClass] [a-z]
#-----| 0 -> [RegExpCharacterRange] a-z
# 187| [RegExpConstant, RegExpNormalChar] a
# 187| [RegExpCharacterRange] a-z
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
#-----| 1 -> [RegExpConstant, RegExpNormalChar] z
# 187| [RegExpConstant, RegExpNormalChar] z
# 188| [RegExpCharacterClass] [a-zA-Z]
#-----| 0 -> [RegExpCharacterRange] a-z
#-----| 1 -> [RegExpCharacterRange] A-Z
# 188| [RegExpConstant, RegExpNormalChar] a
# 188| [RegExpCharacterRange] a-z
@@ -6413,119 +6401,129 @@ regex.swift:
# 188| [RegExpConstant, RegExpNormalChar] z
# 188| [RegExpConstant, RegExpNormalChar] A
# 189| [RegExpCharacterClass] [a-zA-Z]
#-----| 0 -> [RegExpCharacterRange] a-z
#-----| 1 -> [RegExpCharacterRange] A-Z
# 188| [RegExpCharacterRange] A-Z
# 189| [RegExpConstant, RegExpNormalChar] a
# 189| [RegExpCharacterRange] a-z
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
#-----| 1 -> [RegExpConstant, RegExpNormalChar] z
# 189| [RegExpConstant, RegExpNormalChar] z
# 189| [RegExpConstant, RegExpNormalChar] A
# 189| [RegExpCharacterRange] A-Z
#-----| 0 -> [RegExpConstant, RegExpNormalChar] A
#-----| 1 -> [RegExpConstant, RegExpNormalChar] Z
# 188| [RegExpConstant, RegExpNormalChar] Z
# 189| [RegExpConstant, RegExpNormalChar] Z
# 191| [RegExpCharacterClass] [a-]
# 192| [RegExpCharacterClass] [a-]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
#-----| 1 -> [RegExpConstant, RegExpNormalChar] -
# 191| [RegExpConstant, RegExpNormalChar] a
# 191| [RegExpConstant, RegExpNormalChar] -
# 192| [RegExpCharacterClass] [-a]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] -
#-----| 1 -> [RegExpConstant, RegExpNormalChar] a
# 192| [RegExpConstant, RegExpNormalChar] a
# 192| [RegExpConstant, RegExpNormalChar] -
# 192| [RegExpConstant, RegExpNormalChar] a
# 193| [RegExpCharacterClass] [-]
# 193| [RegExpCharacterClass] [-a]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] -
#-----| 1 -> [RegExpConstant, RegExpNormalChar] a
# 193| [RegExpConstant, RegExpNormalChar] -
# 194| [RegExpCharacterClass] [*]
# 193| [RegExpConstant, RegExpNormalChar] a
# 194| [RegExpCharacterClass] [-]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] -
# 194| [RegExpConstant, RegExpNormalChar] -
# 195| [RegExpCharacterClass] [*]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] *
# 194| [RegExpConstant, RegExpNormalChar] *
# 195| [RegExpConstant, RegExpNormalChar] *
# 195| [RegExpCharacterClass] [^a]
# 196| [RegExpCharacterClass] [^a]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
# 195| [RegExpConstant, RegExpNormalChar] a
# 196| [RegExpCharacterClass] [a^]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
#-----| 1 -> [RegExpConstant, RegExpNormalChar] ^
# 196| [RegExpConstant, RegExpNormalChar] a
# 196| [RegExpConstant, RegExpNormalChar] ^
# 197| [RegExpCharacterClass] [a^]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
#-----| 1 -> [RegExpConstant, RegExpNormalChar] ^
# 197| [RegExpCharacterClass] [\\]
# 197| [RegExpConstant, RegExpNormalChar] a
# 197| [RegExpConstant, RegExpNormalChar] ^
# 198| [RegExpCharacterClass] [\\]
#-----| 0 -> [RegExpConstant, RegExpEscape] \\
# 197| [RegExpConstant, RegExpEscape] \\
# 198| [RegExpCharacterClass] [\\\]]
#-----| 0 -> [RegExpConstant, RegExpEscape] \\
#-----| 1 -> [RegExpConstant, RegExpEscape] \]
# 198| [RegExpConstant, RegExpEscape] \\
# 198| [RegExpConstant, RegExpEscape] \]
# 199| [RegExpCharacterClass] [\\\]]
#-----| 0 -> [RegExpConstant, RegExpEscape] \\
#-----| 1 -> [RegExpConstant, RegExpEscape] \]
# 199| [RegExpCharacterClass] [:]
# 199| [RegExpConstant, RegExpEscape] \\
# 199| [RegExpConstant, RegExpEscape] \]
# 200| [RegExpCharacterClass] [:]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] :
# 199| [RegExpConstant, RegExpNormalChar] :
# 200| [RegExpConstant, RegExpNormalChar] :
# 200| [RegExpNamedCharacterProperty] [:digit:]
# 201| [RegExpNamedCharacterProperty] [:digit:]
# 201| [RegExpNamedCharacterProperty] [:alnum:]
# 202| [RegExpNamedCharacterProperty] [:alnum:]
# 204| [RegExpCharacterClass] []a]
# 205| [RegExpCharacterClass] []a]
#-----| 0 -> [RegExpConstant, RegExpNormalChar] ]
#-----| 1 -> [RegExpConstant, RegExpNormalChar] a
# 204| [RegExpConstant, RegExpNormalChar] ]
# 205| [RegExpConstant, RegExpNormalChar] ]
# 204| [RegExpConstant, RegExpNormalChar] a
# 205| [RegExpConstant, RegExpNormalChar] a
# 205| [RegExpNamedCharacterProperty] [:aaaaa:]
# 206| [RegExpNamedCharacterProperty] [:aaaaa:]
# 209| [RegExpGroup] (?i)
# 210| [RegExpGroup] (?i)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
# 209| [RegExpSequence] (?i)abc
# 210| [RegExpSequence] (?i)abc
#-----| 0 -> [RegExpGroup] (?i)
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
# 209| [RegExpConstant, RegExpNormalChar] i
# 209| [RegExpConstant, RegExpNormalChar] abc
# 210| [RegExpGroup] (?s)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] s
# 210| [RegExpSequence] (?s)abc
#-----| 0 -> [RegExpGroup] (?s)
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
# 210| [RegExpConstant, RegExpNormalChar] s
# 210| [RegExpConstant, RegExpNormalChar] i
# 210| [RegExpConstant, RegExpNormalChar] abc
# 211| [RegExpGroup] (?is)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] is
# 211| [RegExpGroup] (?s)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] s
# 211| [RegExpSequence] (?is)abc
#-----| 0 -> [RegExpGroup] (?is)
# 211| [RegExpSequence] (?s)abc
#-----| 0 -> [RegExpGroup] (?s)
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
# 211| [RegExpConstant, RegExpNormalChar] is
# 211| [RegExpConstant, RegExpNormalChar] s
# 211| [RegExpConstant, RegExpNormalChar] abc
# 213| [RegExpConstant, RegExpNormalChar] abc
# 212| [RegExpGroup] (?is)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] is
# 212| [RegExpSequence] (?is)abc
#-----| 0 -> [RegExpGroup] (?is)
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
# 212| [RegExpConstant, RegExpNormalChar] is
# 212| [RegExpConstant, RegExpNormalChar] abc
# 214| [RegExpConstant, RegExpNormalChar] abc
@@ -6535,67 +6533,71 @@ regex.swift:
# 217| [RegExpConstant, RegExpNormalChar] abc
# 219| [RegExpDot] .
# 218| [RegExpConstant, RegExpNormalChar] abc
# 219| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 220| [RegExpDot] .
# 220| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 219| [RegExpConstant, RegExpNormalChar] abc
# 221| [RegExpDot] .
# 221| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 227| [RegExpGroup] (?i-s)
# 222| [RegExpDot] .
# 222| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 223| [RegExpDot] .
# 223| [RegExpStar] .*
#-----| 0 -> [RegExpDot] .
# 229| [RegExpGroup] (?i-s)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i-s
# 227| [RegExpSequence] (?i-s)abc
# 229| [RegExpSequence] (?i-s)abc
#-----| 0 -> [RegExpGroup] (?i-s)
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
# 227| [RegExpConstant, RegExpNormalChar] i-s
# 229| [RegExpConstant, RegExpNormalChar] i-s
# 227| [RegExpConstant, RegExpNormalChar] abc
# 229| [RegExpConstant, RegExpNormalChar] abc
# 230| [RegExpConstant, RegExpNormalChar] abc
# 232| [RegExpConstant, RegExpNormalChar] abc
# 230| [RegExpSequence] abc(?i)def
# 232| [RegExpSequence] abc(?i)def
#-----| 0 -> [RegExpConstant, RegExpNormalChar] abc
#-----| 1 -> [RegExpGroup] (?i)
#-----| 2 -> [RegExpConstant, RegExpNormalChar] def
# 230| [RegExpGroup] (?i)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
# 230| [RegExpConstant, RegExpNormalChar] i
# 230| [RegExpConstant, RegExpNormalChar] def
# 231| [RegExpConstant, RegExpNormalChar] abc
# 231| [RegExpSequence] abc(?i:def)ghi
#-----| 0 -> [RegExpConstant, RegExpNormalChar] abc
#-----| 1 -> [RegExpGroup] (?i:def)
#-----| 2 -> [RegExpConstant, RegExpNormalChar] ghi
# 231| [RegExpGroup] (?i:def)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i:def
# 231| [RegExpConstant, RegExpNormalChar] i:def
# 231| [RegExpConstant, RegExpNormalChar] ghi
# 232| [RegExpGroup] (?i)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
# 232| [RegExpConstant, RegExpNormalChar] i
# 232| [RegExpConstant, RegExpNormalChar] abc
# 232| [RegExpConstant, RegExpNormalChar] -i
# 232| [RegExpConstant, RegExpNormalChar] def
# 233| [RegExpConstant, RegExpNormalChar] abc
# 233| [RegExpSequence] abc(?i:def)ghi
#-----| 0 -> [RegExpConstant, RegExpNormalChar] abc
#-----| 1 -> [RegExpGroup] (?i:def)
#-----| 2 -> [RegExpConstant, RegExpNormalChar] ghi
# 233| [RegExpGroup] (?i:def)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i:def
# 233| [RegExpConstant, RegExpNormalChar] i:def
# 233| [RegExpConstant, RegExpNormalChar] ghi
# 234| [RegExpGroup] (?i)
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
# 234| [RegExpConstant, RegExpNormalChar] i
# 234| [RegExpConstant, RegExpNormalChar] abc
# 234| [RegExpConstant, RegExpNormalChar] -i
# 234| [RegExpConstant, RegExpNormalChar] def

View File

@@ -19,6 +19,7 @@ struct Regex<Output> : RegexComponent {
func ignoresCase(_ ignoresCase: Bool = true) -> Regex<Regex<Output>.RegexOutput> { return self }
func dotMatchesNewlines(_ dotMatchesNewlines: Bool = true) -> Regex<Regex<Output>.RegexOutput> { return self }
func anchorsMatchLineEndings(_ matchLineEndings: Bool = true) -> Regex<Regex<Output>.RegexOutput> { return self }
func firstMatch(in string: String) throws -> Regex<Output>.Match? { return nil }
func prefixMatch(in string: String) throws -> Regex<Output>.Match? { return nil }
@@ -215,6 +216,7 @@ func myRegexpMethodsTests(b: Bool, str_unknown: String) throws {
_ = try Regex("abc").dotMatchesNewlines(true).dotMatchesNewlines(false).firstMatch(in: input) // $ input=input regex=abc
_ = try Regex("abc").dotMatchesNewlines(false).dotMatchesNewlines(true).firstMatch(in: input) // $ input=input regex=abc modes=DOTALL
_ = try Regex("abc").dotMatchesNewlines().ignoresCase().firstMatch(in: input) // $ input=input regex=abc modes="DOTALL | IGNORECASE"
_ = try Regex("abc").anchorsMatchLineEndings().firstMatch(in: input) // $ input=input regex=abc modes=MULTILINE
_ = try NSRegularExpression(pattern: ".*", options: .caseInsensitive).firstMatch(in: input, range: NSMakeRange(0, input.utf16.count)) // $ regex=.* input=input MISSING: modes=IGNORECASE
_ = try NSRegularExpression(pattern: ".*", options: .dotMatchesLineSeparators).firstMatch(in: input, range: NSMakeRange(0, input.utf16.count)) // $ regex=.* input=input MISSING: modes=DOTALL