Skip to content

Commit 992f572

Browse files
committed
Handle all other cases where case-insensitive matching should only be done with /u. Add generated tests.
The generated test cases exhaustively test all case-insensitive single-character matches under Unicode 8.0. Could probably have written these tests as a mirror of the table from the source and some logic from the table generator, but this is more straightforward. Includes tests for which cases should not case-fold without /u flag. (Focused on v8 compat.) Minified the function names to save file size at slight readability cost, but since they're not very readable without an encyclopediac knowledge of unicode code points, that seems like a non-goal.
1 parent 64f2bb1 commit 992f572

5 files changed

Lines changed: 5134 additions & 284 deletions

File tree

lib/Parser/CaseInsensitive.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ END {
224224
1, MappingSource::CaseFolding, 0x00c5, 0x00c5, 0, 32, 8294, 8294,
225225
1, MappingSource::UnicodeData, 0x00c5, 0x00d6, 0, 32, 32, 32,
226226
1, MappingSource::UnicodeData, 0x00d8, 0x00de, 0, 32, 32, 32,
227-
1, MappingSource::UnicodeData, 0x00df, 0x00df, 0, 7615, 7615, 7615,
227+
1, MappingSource::CaseFolding, 0x00df, 0x00df, 0, 7615, 7615, 7615,
228228
1, MappingSource::UnicodeData, 0x00e0, 0x00e4, -32, 0, 0, 0,
229229
1, MappingSource::CaseFolding, 0x00e5, 0x00e5, -32, 0, 8262, 8262,
230230
1, MappingSource::UnicodeData, 0x00e5, 0x00f6, -32, 0, 0, 0,
@@ -348,7 +348,7 @@ END {
348348
1, MappingSource::UnicodeData, 0x028a, 0x028b, -217, 0, 0, 0,
349349
1, MappingSource::UnicodeData, 0x028c, 0x028c, -71, 0, 0, 0,
350350
1, MappingSource::UnicodeData, 0x0292, 0x0292, -219, 0, 0, 0,
351-
1, MappingSource::UnicodeData, 0x029d, 0x029d, 0, 42261, 42261, 42261,
351+
1, MappingSource::CaseFolding, 0x029d, 0x029d, 0, 42261, 42261, 42261,
352352
1, MappingSource::UnicodeData, 0x029e, 0x029e, 0, 42258, 42258, 42258,
353353
1, MappingSource::UnicodeData, 0x0345, 0x0345, 0, 84, 116, 7289,
354354
2, MappingSource::UnicodeData, 0x0370, 0x0373, -1, 1, 1, 1,
@@ -450,7 +450,7 @@ END {
450450
1, MappingSource::UnicodeData, 0x1e61, 0x1e61, -1, 0, 58, 58,
451451
2, MappingSource::UnicodeData, 0x1e62, 0x1e95, -1, 1, 1, 1,
452452
1, MappingSource::UnicodeData, 0x1e9b, 0x1e9b, -59, -58, 0, 0,
453-
1, MappingSource::UnicodeData, 0x1e9e, 0x1e9e, -7615, 0, 0, 0,
453+
1, MappingSource::CaseFolding, 0x1e9e, 0x1e9e, -7615, 0, 0, 0,
454454
2, MappingSource::UnicodeData, 0x1ea0, 0x1eff, -1, 1, 1, 1,
455455
1, MappingSource::UnicodeData, 0x1f00, 0x1f07, 0, 8, 8, 8,
456456
1, MappingSource::UnicodeData, 0x1f08, 0x1f0f, -8, 0, 0, 0,
@@ -478,21 +478,21 @@ END {
478478
1, MappingSource::UnicodeData, 0x1f78, 0x1f79, 0, 128, 128, 128,
479479
1, MappingSource::UnicodeData, 0x1f7a, 0x1f7b, 0, 112, 112, 112,
480480
1, MappingSource::UnicodeData, 0x1f7c, 0x1f7d, 0, 126, 126, 126,
481-
1, MappingSource::UnicodeData, 0x1f80, 0x1f87, 0, 8, 8, 8,
482-
1, MappingSource::UnicodeData, 0x1f88, 0x1f8f, -8, 0, 0, 0,
483-
1, MappingSource::UnicodeData, 0x1f90, 0x1f97, 0, 8, 8, 8,
484-
1, MappingSource::UnicodeData, 0x1f98, 0x1f9f, -8, 0, 0, 0,
485-
1, MappingSource::UnicodeData, 0x1fa0, 0x1fa7, 0, 8, 8, 8,
486-
1, MappingSource::UnicodeData, 0x1fa8, 0x1faf, -8, 0, 0, 0,
481+
1, MappingSource::CaseFolding, 0x1f80, 0x1f87, 0, 8, 8, 8,
482+
1, MappingSource::CaseFolding, 0x1f88, 0x1f8f, -8, 0, 0, 0,
483+
1, MappingSource::CaseFolding, 0x1f90, 0x1f97, 0, 8, 8, 8,
484+
1, MappingSource::CaseFolding, 0x1f98, 0x1f9f, -8, 0, 0, 0,
485+
1, MappingSource::CaseFolding, 0x1fa0, 0x1fa7, 0, 8, 8, 8,
486+
1, MappingSource::CaseFolding, 0x1fa8, 0x1faf, -8, 0, 0, 0,
487487
1, MappingSource::UnicodeData, 0x1fb0, 0x1fb1, 0, 8, 8, 8,
488-
1, MappingSource::UnicodeData, 0x1fb3, 0x1fb3, 0, 9, 9, 9,
488+
1, MappingSource::CaseFolding, 0x1fb3, 0x1fb3, 0, 9, 9, 9,
489489
1, MappingSource::UnicodeData, 0x1fb8, 0x1fb9, -8, 0, 0, 0,
490490
1, MappingSource::UnicodeData, 0x1fba, 0x1fbb, -74, 0, 0, 0,
491-
1, MappingSource::UnicodeData, 0x1fbc, 0x1fbc, -9, 0, 0, 0,
491+
1, MappingSource::CaseFolding, 0x1fbc, 0x1fbc, -9, 0, 0, 0,
492492
1, MappingSource::UnicodeData, 0x1fbe, 0x1fbe, -7289, -7205, -7173, 0,
493-
1, MappingSource::UnicodeData, 0x1fc3, 0x1fc3, 0, 9, 9, 9,
493+
1, MappingSource::CaseFolding, 0x1fc3, 0x1fc3, 0, 9, 9, 9,
494494
1, MappingSource::UnicodeData, 0x1fc8, 0x1fcb, -86, 0, 0, 0,
495-
1, MappingSource::UnicodeData, 0x1fcc, 0x1fcc, -9, 0, 0, 0,
495+
1, MappingSource::CaseFolding, 0x1fcc, 0x1fcc, -9, 0, 0, 0,
496496
1, MappingSource::UnicodeData, 0x1fd0, 0x1fd1, 0, 8, 8, 8,
497497
1, MappingSource::UnicodeData, 0x1fd8, 0x1fd9, -8, 0, 0, 0,
498498
1, MappingSource::UnicodeData, 0x1fda, 0x1fdb, -100, 0, 0, 0,
@@ -501,10 +501,10 @@ END {
501501
1, MappingSource::UnicodeData, 0x1fe8, 0x1fe9, -8, 0, 0, 0,
502502
1, MappingSource::UnicodeData, 0x1fea, 0x1feb, -112, 0, 0, 0,
503503
1, MappingSource::UnicodeData, 0x1fec, 0x1fec, -7, 0, 0, 0,
504-
1, MappingSource::UnicodeData, 0x1ff3, 0x1ff3, 0, 9, 9, 9,
504+
1, MappingSource::CaseFolding, 0x1ff3, 0x1ff3, 0, 9, 9, 9,
505505
1, MappingSource::UnicodeData, 0x1ff8, 0x1ff9, -128, 0, 0, 0,
506506
1, MappingSource::UnicodeData, 0x1ffa, 0x1ffb, -126, 0, 0, 0,
507-
1, MappingSource::UnicodeData, 0x1ffc, 0x1ffc, -9, 0, 0, 0,
507+
1, MappingSource::CaseFolding, 0x1ffc, 0x1ffc, -9, 0, 0, 0,
508508
1, MappingSource::CaseFolding, 0x2126, 0x2126, -7549, -7517, 0, 0,
509509
1, MappingSource::CaseFolding, 0x212a, 0x212a, -8415, -8383, 0, 0,
510510
1, MappingSource::CaseFolding, 0x212b, 0x212b, -8294, -8262, 0, 0,
@@ -561,10 +561,10 @@ END {
561561
1, MappingSource::UnicodeData, 0xa7ad, 0xa7ad, -42305, 0, 0, 0,
562562
1, MappingSource::UnicodeData, 0xa7b0, 0xa7b0, -42258, 0, 0, 0,
563563
1, MappingSource::UnicodeData, 0xa7b1, 0xa7b1, -42282, 0, 0, 0,
564-
1, MappingSource::UnicodeData, 0xa7b2, 0xa7b2, -42261, 0, 0, 0,
565-
1, MappingSource::UnicodeData, 0xa7b3, 0xa7b3, 0, 928, 928, 928,
566-
2, MappingSource::UnicodeData, 0xa7b4, 0xa7b7, -1, 1, 1, 1,
567-
1, MappingSource::UnicodeData, 0xab53, 0xab53, -928, 0, 0, 0,
564+
1, MappingSource::CaseFolding, 0xa7b2, 0xa7b2, -42261, 0, 0, 0,
565+
1, MappingSource::CaseFolding, 0xa7b3, 0xa7b3, 0, 928, 928, 928,
566+
2, MappingSource::CaseFolding, 0xa7b4, 0xa7b7, -1, 1, 1, 1,
567+
1, MappingSource::CaseFolding, 0xab53, 0xab53, -928, 0, 0, 0,
568568
1, MappingSource::CaseFolding, 0xab70, 0xabbf, -38864, 0, 0, 0,
569569
1, MappingSource::UnicodeData, 0xff21, 0xff3a, 0, 32, 32, 32,
570570
1, MappingSource::UnicodeData, 0xff41, 0xff5a, -32, 0, 0, 0,

0 commit comments

Comments
 (0)