Skip to content

Commit 84f592b

Browse files
committed
Swift: Add another test case.
1 parent f8b8c67 commit 84f592b

File tree

2 files changed

+108
-104
lines changed

2 files changed

+108
-104
lines changed

swift/ql/test/library-tests/regex/parse.expected

Lines changed: 106 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -6327,205 +6327,203 @@ redos_variants.swift:
63276327
# 579| [RegExpConstant, RegExpNormalChar] c
63286328

63296329
regex.swift:
6330-
# 110| [RegExpDot] .
6330+
# 111| [RegExpDot] .
63316331

6332-
# 110| [RegExpStar] .*
6332+
# 111| [RegExpStar] .*
63336333
#-----| 0 -> [RegExpDot] .
63346334

6335-
# 132| [RegExpDot] .
6335+
# 133| [RegExpDot] .
63366336

6337-
# 132| [RegExpStar] .*
6337+
# 133| [RegExpStar] .*
63386338
#-----| 0 -> [RegExpDot] .
63396339

6340-
# 149| [RegExpDot] .
6340+
# 150| [RegExpDot] .
63416341

6342-
# 149| [RegExpStar] .*
6342+
# 150| [RegExpStar] .*
63436343
#-----| 0 -> [RegExpDot] .
63446344

6345-
# 149| [RegExpDot] .
6345+
# 150| [RegExpDot] .
63466346

6347-
# 149| [RegExpPlus] .+
6347+
# 150| [RegExpPlus] .+
63486348
#-----| 0 -> [RegExpDot] .
63496349

6350-
# 156| [RegExpGroup] ([\w.]+)
6350+
# 157| [RegExpGroup] ([\w.]+)
63516351
#-----| 0 -> [RegExpPlus] [\w.]+
63526352

6353-
# 156| [RegExpStar] ([\w.]+)*
6353+
# 157| [RegExpStar] ([\w.]+)*
63546354
#-----| 0 -> [RegExpGroup] ([\w.]+)
63556355

6356-
# 156| [RegExpCharacterClass] [\w.]
6356+
# 157| [RegExpCharacterClass] [\w.]
63576357
#-----| 0 -> [RegExpCharacterClassEscape] \w
63586358
#-----| 1 -> [RegExpConstant, RegExpNormalChar] .
63596359

6360-
# 156| [RegExpPlus] [\w.]+
6360+
# 157| [RegExpPlus] [\w.]+
63616361
#-----| 0 -> [RegExpCharacterClass] [\w.]
63626362

6363-
# 156| [RegExpCharacterClassEscape] \w
6363+
# 157| [RegExpCharacterClassEscape] \w
63646364

6365-
# 156| [RegExpConstant, RegExpNormalChar] .
6365+
# 157| [RegExpConstant, RegExpNormalChar] .
63666366

6367-
# 163| [RegExpConstant, RegExpNormalChar]
6368-
# 163|
6369-
6370-
# 164| [RegExpConstant, RegExpEscape] \n
6367+
# 164| [RegExpConstant, RegExpNormalChar]
6368+
# 164|
63716369

63726370
# 165| [RegExpConstant, RegExpEscape] \n
63736371

6374-
# 175| [RegExpConstant, RegExpNormalChar] aa
6372+
# 166| [RegExpConstant, RegExpEscape] \n
6373+
6374+
# 176| [RegExpConstant, RegExpNormalChar] aa
63756375

6376-
# 175| [RegExpAlt] aa|bb
6376+
# 176| [RegExpAlt] aa|bb
63776377
#-----| 0 -> [RegExpConstant, RegExpNormalChar] aa
63786378
#-----| 1 -> [RegExpConstant, RegExpNormalChar] bb
63796379

6380-
# 175| [RegExpConstant, RegExpNormalChar] bb
6380+
# 176| [RegExpConstant, RegExpNormalChar] bb
63816381

6382-
# 179| [RegExpConstant, RegExpNormalChar] aa
6382+
# 180| [RegExpConstant, RegExpNormalChar] aa
63836383

6384-
# 179| [RegExpAlt] aa|
6385-
# 179| bb
6384+
# 180| [RegExpAlt] aa|
6385+
# 180| bb
63866386
#-----| 0 -> [RegExpConstant, RegExpNormalChar] aa
63876387
#-----| 1 -> [RegExpConstant, RegExpNormalChar]
63886388
#-----| bb
63896389

6390-
# 179| [RegExpConstant, RegExpNormalChar]
6391-
# 179| bb
6390+
# 180| [RegExpConstant, RegExpNormalChar]
6391+
# 180| bb
63926392

6393-
# 187| [RegExpCharacterClass] [a-z]
6393+
# 188| [RegExpCharacterClass] [a-z]
63946394
#-----| 0 -> [RegExpCharacterRange] a-z
63956395

6396-
# 187| [RegExpConstant, RegExpNormalChar] a
6396+
# 188| [RegExpConstant, RegExpNormalChar] a
63976397

6398-
# 187| [RegExpCharacterRange] a-z
6398+
# 188| [RegExpCharacterRange] a-z
63996399
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
64006400
#-----| 1 -> [RegExpConstant, RegExpNormalChar] z
64016401

6402-
# 187| [RegExpConstant, RegExpNormalChar] z
6402+
# 188| [RegExpConstant, RegExpNormalChar] z
64036403

6404-
# 188| [RegExpCharacterClass] [a-zA-Z]
6404+
# 189| [RegExpCharacterClass] [a-zA-Z]
64056405
#-----| 0 -> [RegExpCharacterRange] a-z
64066406
#-----| 1 -> [RegExpCharacterRange] A-Z
64076407

6408-
# 188| [RegExpConstant, RegExpNormalChar] a
6408+
# 189| [RegExpConstant, RegExpNormalChar] a
64096409

6410-
# 188| [RegExpCharacterRange] a-z
6410+
# 189| [RegExpCharacterRange] a-z
64116411
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
64126412
#-----| 1 -> [RegExpConstant, RegExpNormalChar] z
64136413

6414-
# 188| [RegExpConstant, RegExpNormalChar] z
6414+
# 189| [RegExpConstant, RegExpNormalChar] z
64156415

6416-
# 188| [RegExpConstant, RegExpNormalChar] A
6416+
# 189| [RegExpConstant, RegExpNormalChar] A
64176417

6418-
# 188| [RegExpCharacterRange] A-Z
6418+
# 189| [RegExpCharacterRange] A-Z
64196419
#-----| 0 -> [RegExpConstant, RegExpNormalChar] A
64206420
#-----| 1 -> [RegExpConstant, RegExpNormalChar] Z
64216421

6422-
# 188| [RegExpConstant, RegExpNormalChar] Z
6422+
# 189| [RegExpConstant, RegExpNormalChar] Z
64236423

6424-
# 191| [RegExpCharacterClass] [a-]
6424+
# 192| [RegExpCharacterClass] [a-]
64256425
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
64266426
#-----| 1 -> [RegExpConstant, RegExpNormalChar] -
64276427

6428-
# 191| [RegExpConstant, RegExpNormalChar] a
6428+
# 192| [RegExpConstant, RegExpNormalChar] a
64296429

6430-
# 191| [RegExpConstant, RegExpNormalChar] -
6430+
# 192| [RegExpConstant, RegExpNormalChar] -
64316431

6432-
# 192| [RegExpCharacterClass] [-a]
6432+
# 193| [RegExpCharacterClass] [-a]
64336433
#-----| 0 -> [RegExpConstant, RegExpNormalChar] -
64346434
#-----| 1 -> [RegExpConstant, RegExpNormalChar] a
64356435

6436-
# 192| [RegExpConstant, RegExpNormalChar] -
6436+
# 193| [RegExpConstant, RegExpNormalChar] -
64376437

6438-
# 192| [RegExpConstant, RegExpNormalChar] a
6438+
# 193| [RegExpConstant, RegExpNormalChar] a
64396439

6440-
# 193| [RegExpCharacterClass] [-]
6440+
# 194| [RegExpCharacterClass] [-]
64416441
#-----| 0 -> [RegExpConstant, RegExpNormalChar] -
64426442

6443-
# 193| [RegExpConstant, RegExpNormalChar] -
6443+
# 194| [RegExpConstant, RegExpNormalChar] -
64446444

6445-
# 194| [RegExpCharacterClass] [*]
6445+
# 195| [RegExpCharacterClass] [*]
64466446
#-----| 0 -> [RegExpConstant, RegExpNormalChar] *
64476447

6448-
# 194| [RegExpConstant, RegExpNormalChar] *
6448+
# 195| [RegExpConstant, RegExpNormalChar] *
64496449

6450-
# 195| [RegExpCharacterClass] [^a]
6450+
# 196| [RegExpCharacterClass] [^a]
64516451
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
64526452

6453-
# 195| [RegExpConstant, RegExpNormalChar] a
6453+
# 196| [RegExpConstant, RegExpNormalChar] a
64546454

6455-
# 196| [RegExpCharacterClass] [a^]
6455+
# 197| [RegExpCharacterClass] [a^]
64566456
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
64576457
#-----| 1 -> [RegExpConstant, RegExpNormalChar] ^
64586458

6459-
# 196| [RegExpConstant, RegExpNormalChar] a
6459+
# 197| [RegExpConstant, RegExpNormalChar] a
64606460

6461-
# 196| [RegExpConstant, RegExpNormalChar] ^
6461+
# 197| [RegExpConstant, RegExpNormalChar] ^
64626462

6463-
# 197| [RegExpCharacterClass] [\\]
6463+
# 198| [RegExpCharacterClass] [\\]
64646464
#-----| 0 -> [RegExpConstant, RegExpEscape] \\
64656465

6466-
# 197| [RegExpConstant, RegExpEscape] \\
6466+
# 198| [RegExpConstant, RegExpEscape] \\
64676467

6468-
# 198| [RegExpCharacterClass] [\\\]]
6468+
# 199| [RegExpCharacterClass] [\\\]]
64696469
#-----| 0 -> [RegExpConstant, RegExpEscape] \\
64706470
#-----| 1 -> [RegExpConstant, RegExpEscape] \]
64716471

6472-
# 198| [RegExpConstant, RegExpEscape] \\
6472+
# 199| [RegExpConstant, RegExpEscape] \\
64736473

6474-
# 198| [RegExpConstant, RegExpEscape] \]
6474+
# 199| [RegExpConstant, RegExpEscape] \]
64756475

6476-
# 199| [RegExpCharacterClass] [:]
6476+
# 200| [RegExpCharacterClass] [:]
64776477
#-----| 0 -> [RegExpConstant, RegExpNormalChar] :
64786478

6479-
# 199| [RegExpConstant, RegExpNormalChar] :
6479+
# 200| [RegExpConstant, RegExpNormalChar] :
64806480

6481-
# 200| [RegExpNamedCharacterProperty] [:digit:]
6481+
# 201| [RegExpNamedCharacterProperty] [:digit:]
64826482

6483-
# 201| [RegExpNamedCharacterProperty] [:alnum:]
6483+
# 202| [RegExpNamedCharacterProperty] [:alnum:]
64846484

6485-
# 204| [RegExpCharacterClass] []a]
6485+
# 205| [RegExpCharacterClass] []a]
64866486
#-----| 0 -> [RegExpConstant, RegExpNormalChar] ]
64876487
#-----| 1 -> [RegExpConstant, RegExpNormalChar] a
64886488

6489-
# 204| [RegExpConstant, RegExpNormalChar] ]
6489+
# 205| [RegExpConstant, RegExpNormalChar] ]
64906490

6491-
# 204| [RegExpConstant, RegExpNormalChar] a
6491+
# 205| [RegExpConstant, RegExpNormalChar] a
64926492

6493-
# 205| [RegExpNamedCharacterProperty] [:aaaaa:]
6493+
# 206| [RegExpNamedCharacterProperty] [:aaaaa:]
64946494

6495-
# 209| [RegExpGroup] (?i)
6495+
# 210| [RegExpGroup] (?i)
64966496
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
64976497

6498-
# 209| [RegExpSequence] (?i)abc
6498+
# 210| [RegExpSequence] (?i)abc
64996499
#-----| 0 -> [RegExpGroup] (?i)
65006500
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
65016501

6502-
# 209| [RegExpConstant, RegExpNormalChar] i
6502+
# 210| [RegExpConstant, RegExpNormalChar] i
65036503

6504-
# 209| [RegExpConstant, RegExpNormalChar] abc
6504+
# 210| [RegExpConstant, RegExpNormalChar] abc
65056505

6506-
# 210| [RegExpGroup] (?s)
6506+
# 211| [RegExpGroup] (?s)
65076507
#-----| 0 -> [RegExpConstant, RegExpNormalChar] s
65086508

6509-
# 210| [RegExpSequence] (?s)abc
6509+
# 211| [RegExpSequence] (?s)abc
65106510
#-----| 0 -> [RegExpGroup] (?s)
65116511
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
65126512

6513-
# 210| [RegExpConstant, RegExpNormalChar] s
6513+
# 211| [RegExpConstant, RegExpNormalChar] s
65146514

6515-
# 210| [RegExpConstant, RegExpNormalChar] abc
6515+
# 211| [RegExpConstant, RegExpNormalChar] abc
65166516

6517-
# 211| [RegExpGroup] (?is)
6517+
# 212| [RegExpGroup] (?is)
65186518
#-----| 0 -> [RegExpConstant, RegExpNormalChar] is
65196519

6520-
# 211| [RegExpSequence] (?is)abc
6520+
# 212| [RegExpSequence] (?is)abc
65216521
#-----| 0 -> [RegExpGroup] (?is)
65226522
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
65236523

6524-
# 211| [RegExpConstant, RegExpNormalChar] is
6525-
6526-
# 211| [RegExpConstant, RegExpNormalChar] abc
6524+
# 212| [RegExpConstant, RegExpNormalChar] is
65276525

6528-
# 213| [RegExpConstant, RegExpNormalChar] abc
6526+
# 212| [RegExpConstant, RegExpNormalChar] abc
65296527

65306528
# 214| [RegExpConstant, RegExpNormalChar] abc
65316529

@@ -6535,67 +6533,71 @@ regex.swift:
65356533

65366534
# 217| [RegExpConstant, RegExpNormalChar] abc
65376535

6538-
# 219| [RegExpDot] .
6536+
# 218| [RegExpConstant, RegExpNormalChar] abc
65396537

6540-
# 219| [RegExpStar] .*
6538+
# 219| [RegExpConstant, RegExpNormalChar] abc
6539+
6540+
# 221| [RegExpDot] .
6541+
6542+
# 221| [RegExpStar] .*
65416543
#-----| 0 -> [RegExpDot] .
65426544

6543-
# 220| [RegExpDot] .
6545+
# 222| [RegExpDot] .
65446546

6545-
# 220| [RegExpStar] .*
6547+
# 222| [RegExpStar] .*
65466548
#-----| 0 -> [RegExpDot] .
65476549

6548-
# 221| [RegExpDot] .
6550+
# 223| [RegExpDot] .
65496551

6550-
# 221| [RegExpStar] .*
6552+
# 223| [RegExpStar] .*
65516553
#-----| 0 -> [RegExpDot] .
65526554

6553-
# 227| [RegExpGroup] (?i-s)
6555+
# 229| [RegExpGroup] (?i-s)
65546556
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i-s
65556557

6556-
# 227| [RegExpSequence] (?i-s)abc
6558+
# 229| [RegExpSequence] (?i-s)abc
65576559
#-----| 0 -> [RegExpGroup] (?i-s)
65586560
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
65596561

6560-
# 227| [RegExpConstant, RegExpNormalChar] i-s
6562+
# 229| [RegExpConstant, RegExpNormalChar] i-s
65616563

6562-
# 227| [RegExpConstant, RegExpNormalChar] abc
6564+
# 229| [RegExpConstant, RegExpNormalChar] abc
65636565

6564-
# 230| [RegExpConstant, RegExpNormalChar] abc
6566+
# 232| [RegExpConstant, RegExpNormalChar] abc
65656567

6566-
# 230| [RegExpSequence] abc(?i)def
6568+
# 232| [RegExpSequence] abc(?i)def
65676569
#-----| 0 -> [RegExpConstant, RegExpNormalChar] abc
65686570
#-----| 1 -> [RegExpGroup] (?i)
65696571
#-----| 2 -> [RegExpConstant, RegExpNormalChar] def
65706572

6571-
# 230| [RegExpGroup] (?i)
6573+
# 232| [RegExpGroup] (?i)
65726574
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
65736575

6574-
# 230| [RegExpConstant, RegExpNormalChar] i
6576+
# 232| [RegExpConstant, RegExpNormalChar] i
65756577

6576-
# 230| [RegExpConstant, RegExpNormalChar] def
6578+
# 232| [RegExpConstant, RegExpNormalChar] def
65776579

6578-
# 231| [RegExpConstant, RegExpNormalChar] abc
6580+
# 233| [RegExpConstant, RegExpNormalChar] abc
65796581

6580-
# 231| [RegExpSequence] abc(?i:def)ghi
6582+
# 233| [RegExpSequence] abc(?i:def)ghi
65816583
#-----| 0 -> [RegExpConstant, RegExpNormalChar] abc
65826584
#-----| 1 -> [RegExpGroup] (?i:def)
65836585
#-----| 2 -> [RegExpConstant, RegExpNormalChar] ghi
65846586

6585-
# 231| [RegExpGroup] (?i:def)
6587+
# 233| [RegExpGroup] (?i:def)
65866588
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i:def
65876589

6588-
# 231| [RegExpConstant, RegExpNormalChar] i:def
6590+
# 233| [RegExpConstant, RegExpNormalChar] i:def
65896591

6590-
# 231| [RegExpConstant, RegExpNormalChar] ghi
6592+
# 233| [RegExpConstant, RegExpNormalChar] ghi
65916593

6592-
# 232| [RegExpGroup] (?i)
6594+
# 234| [RegExpGroup] (?i)
65936595
#-----| 0 -> [RegExpConstant, RegExpNormalChar] i
65946596

6595-
# 232| [RegExpConstant, RegExpNormalChar] i
6597+
# 234| [RegExpConstant, RegExpNormalChar] i
65966598

6597-
# 232| [RegExpConstant, RegExpNormalChar] abc
6599+
# 234| [RegExpConstant, RegExpNormalChar] abc
65986600

6599-
# 232| [RegExpConstant, RegExpNormalChar] -i
6601+
# 234| [RegExpConstant, RegExpNormalChar] -i
66006602

6601-
# 232| [RegExpConstant, RegExpNormalChar] def
6603+
# 234| [RegExpConstant, RegExpNormalChar] def

swift/ql/test/library-tests/regex/regex.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ struct Regex<Output> : RegexComponent {
1919

2020
func ignoresCase(_ ignoresCase: Bool = true) -> Regex<Regex<Output>.RegexOutput> { return self }
2121
func dotMatchesNewlines(_ dotMatchesNewlines: Bool = true) -> Regex<Regex<Output>.RegexOutput> { return self }
22+
func anchorsMatchLineEndings(_ matchLineEndings: Bool = true) -> Regex<Regex<Output>.RegexOutput> { return self }
2223

2324
func firstMatch(in string: String) throws -> Regex<Output>.Match? { return nil }
2425
func prefixMatch(in string: String) throws -> Regex<Output>.Match? { return nil }
@@ -215,6 +216,7 @@ func myRegexpMethodsTests(b: Bool, str_unknown: String) throws {
215216
_ = try Regex("abc").dotMatchesNewlines(true).dotMatchesNewlines(false).firstMatch(in: input) // $ input=input regex=abc
216217
_ = try Regex("abc").dotMatchesNewlines(false).dotMatchesNewlines(true).firstMatch(in: input) // $ input=input regex=abc modes=DOTALL
217218
_ = try Regex("abc").dotMatchesNewlines().ignoresCase().firstMatch(in: input) // $ input=input regex=abc modes="DOTALL | IGNORECASE"
219+
_ = try Regex("abc").anchorsMatchLineEndings().firstMatch(in: input) // $ input=input regex=abc modes=MULTILINE
218220

219221
_ = try NSRegularExpression(pattern: ".*", options: .caseInsensitive).firstMatch(in: input, range: NSMakeRange(0, input.utf16.count)) // $ regex=.* input=input MISSING: modes=IGNORECASE
220222
_ = try NSRegularExpression(pattern: ".*", options: .dotMatchesLineSeparators).firstMatch(in: input, range: NSMakeRange(0, input.utf16.count)) // $ regex=.* input=input MISSING: modes=DOTALL

0 commit comments

Comments
 (0)