From de237ff5d20436eb2c70543a78fbb33e1982c80a Mon Sep 17 00:00:00 2001 From: Dmitry Atamanov Date: Mon, 18 Sep 2023 10:57:31 +0500 Subject: [PATCH 1/2] Update to Unicode 15.1 --- share/ucd/CaseFolding.txt | 9 ++++++--- share/ucd/Makefile | 2 +- share/ucd/Scripts.txt | 14 ++++++++------ share/ucd/UnicodeData.txt | 7 +++++++ src/libre/class/utf8_Common.c | 4 ++-- src/libre/class/utf8_Han.c | 1 + src/libre/class/utf8_L.c | 2 ++ src/libre/class/utf8_Lo.c | 2 ++ src/libre/class/utf8_S.c | 3 ++- src/libre/class/utf8_So.c | 3 ++- src/libre/class/utf8_assigned.c | 7 ++++--- 11 files changed, 37 insertions(+), 17 deletions(-) diff --git a/share/ucd/CaseFolding.txt b/share/ucd/CaseFolding.txt index 65aa0fcd6..69c5c64b4 100644 --- a/share/ucd/CaseFolding.txt +++ b/share/ucd/CaseFolding.txt @@ -1,6 +1,6 @@ -# CaseFolding-15.0.0.txt -# Date: 2022-02-02, 23:35:35 GMT -# © 2022 Unicode®, Inc. +# CaseFolding-15.1.0.txt +# Date: 2023-05-12, 21:53:10 GMT +# © 2023 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see https://www.unicode.org/terms_of_use.html # @@ -929,6 +929,7 @@ 1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA 1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD3; S; 0390; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI 1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI 1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY @@ -937,6 +938,7 @@ 1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA 1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA 1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE3; S; 03B0; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA 1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI 1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI 1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI @@ -1328,6 +1330,7 @@ FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T +FB05; S; FB06; # LATIN SMALL LIGATURE LONG S T FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH diff --git a/share/ucd/Makefile b/share/ucd/Makefile index 8af79f1b4..c5b9781d0 100644 --- a/share/ucd/Makefile +++ b/share/ucd/Makefile @@ -1,4 +1,4 @@ -UCD_URL ?= https://www.unicode.org/Public/15.0.0/ucd/ +UCD_URL ?= https://www.unicode.org/Public/15.1.0/ucd/ WGET ?= wget diff --git a/share/ucd/Scripts.txt b/share/ucd/Scripts.txt index 2b138bffb..0b3f717cb 100644 --- a/share/ucd/Scripts.txt +++ b/share/ucd/Scripts.txt @@ -1,6 +1,6 @@ -# Scripts-15.0.0.txt -# Date: 2022-04-26, 23:15:02 GMT -# © 2022 Unicode®, Inc. +# Scripts-15.1.0.txt +# Date: 2023-07-28, 16:01:07 GMT +# © 2023 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see https://www.unicode.org/terms_of_use.html # @@ -357,7 +357,7 @@ 2E5B ; Common # Ps BOTTOM HALF LEFT PARENTHESIS 2E5C ; Common # Pe BOTTOM HALF RIGHT PARENTHESIS 2E5D ; Common # Pd OBLIQUE HYPHEN -2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID +2FF0..2FFF ; Common # So [16] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION 3000 ; Common # Zs IDEOGRAPHIC SPACE 3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK 3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL @@ -399,6 +399,7 @@ 3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK 3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK 31C0..31E3 ; Common # So [36] CJK STROKE T..CJK STROKE Q +31EF ; Common # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION 3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN 322A..3247 ; Common # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO 3248..324F ; Common # No [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE @@ -629,7 +630,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR E0001 ; Common # Cf LANGUAGE TAG E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG -# Total code points: 8301 +# Total code points: 8306 # ================================================ @@ -1593,11 +1594,12 @@ FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILI 2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Han # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +2EBF0..2EE5D ; Han # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; Han # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A 31350..323AF ; Han # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 98408 +# Total code points: 99030 # ================================================ diff --git a/share/ucd/UnicodeData.txt b/share/ucd/UnicodeData.txt index ea963a716..bdcc41850 100644 --- a/share/ucd/UnicodeData.txt +++ b/share/ucd/UnicodeData.txt @@ -11231,6 +11231,10 @@ 2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; 2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; 2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; +2FFC;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT;So;0;ON;;;;;N;;;;; +2FFD;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT;So;0;ON;;;;;N;;;;; +2FFE;IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION;So;0;ON;;;;;N;;;;; +2FFF;IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION;So;0;ON;;;;;N;;;;; 3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; 3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; 3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; @@ -11705,6 +11709,7 @@ 31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; 31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; 31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; +31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;So;0;ON;;;;;N;;;;; 31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; 31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; 31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; @@ -34035,6 +34040,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 2CEA1;;Lo;0;L;;;;;N;;;;; 2CEB0;;Lo;0;L;;;;;N;;;;; 2EBE0;;Lo;0;L;;;;;N;;;;; +2EBF0;;Lo;0;L;;;;;N;;;;; +2EE5D;;Lo;0;L;;;;;N;;;;; 2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; 2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; 2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; diff --git a/src/libre/class/utf8_Common.c b/src/libre/class/utf8_Common.c index 23e3cbf4b..a6ad8b58a 100644 --- a/src/libre/class/utf8_Common.c +++ b/src/libre/class/utf8_Common.c @@ -57,8 +57,7 @@ static const struct range ranges[] = { { 0x2B76UL, 0x2B95UL }, { 0x2B97UL, 0x2BFFUL }, { 0x2E00UL, 0x2E5DUL }, - { 0x2FF0UL, 0x2FFBUL }, - { 0x3000UL, 0x3004UL }, + { 0x2FF0UL, 0x3004UL }, { 0x3006UL, 0x3006UL }, { 0x3008UL, 0x3020UL }, { 0x3030UL, 0x3037UL }, @@ -68,6 +67,7 @@ static const struct range ranges[] = { { 0x30FBUL, 0x30FCUL }, { 0x3190UL, 0x319FUL }, { 0x31C0UL, 0x31E3UL }, + { 0x31EFUL, 0x31EFUL }, { 0x3220UL, 0x325FUL }, { 0x327FUL, 0x32CFUL }, { 0x32FFUL, 0x32FFUL }, diff --git a/src/libre/class/utf8_Han.c b/src/libre/class/utf8_Han.c index b22f0ed22..ce3bbce61 100644 --- a/src/libre/class/utf8_Han.c +++ b/src/libre/class/utf8_Han.c @@ -35,6 +35,7 @@ static const struct range ranges[] = { { 0x2B740UL, 0x2B81DUL }, { 0x2B820UL, 0x2CEA1UL }, { 0x2CEB0UL, 0x2EBE0UL }, + { 0x2EBF0UL, 0x2EE5DUL }, { 0x2F800UL, 0x2FA1DUL }, { 0x30000UL, 0x3134AUL }, { 0x31350UL, 0x323AFUL }, diff --git a/src/libre/class/utf8_L.c b/src/libre/class/utf8_L.c index 97eaa3ffe..9ecd7ba14 100644 --- a/src/libre/class/utf8_L.c +++ b/src/libre/class/utf8_L.c @@ -669,6 +669,8 @@ static const struct range ranges[] = { { 0x2CEA1UL, 0x2CEA1UL }, { 0x2CEB0UL, 0x2CEB0UL }, { 0x2EBE0UL, 0x2EBE0UL }, + { 0x2EBF0UL, 0x2EBF0UL }, + { 0x2EE5DUL, 0x2EE5DUL }, { 0x2F800UL, 0x2FA1DUL }, { 0x30000UL, 0x30000UL }, { 0x3134AUL, 0x3134AUL }, diff --git a/src/libre/class/utf8_Lo.c b/src/libre/class/utf8_Lo.c index 2188ecd6f..c361d6892 100644 --- a/src/libre/class/utf8_Lo.c +++ b/src/libre/class/utf8_Lo.c @@ -520,6 +520,8 @@ static const struct range ranges[] = { { 0x2CEA1UL, 0x2CEA1UL }, { 0x2CEB0UL, 0x2CEB0UL }, { 0x2EBE0UL, 0x2EBE0UL }, + { 0x2EBF0UL, 0x2EBF0UL }, + { 0x2EE5DUL, 0x2EE5DUL }, { 0x2F800UL, 0x2FA1DUL }, { 0x30000UL, 0x30000UL }, { 0x3134AUL, 0x3134AUL }, diff --git a/src/libre/class/utf8_S.c b/src/libre/class/utf8_S.c index 5a114bea5..1ad790595 100644 --- a/src/libre/class/utf8_S.c +++ b/src/libre/class/utf8_S.c @@ -110,7 +110,7 @@ static const struct range ranges[] = { { 0x2E80UL, 0x2E99UL }, { 0x2E9BUL, 0x2EF3UL }, { 0x2F00UL, 0x2FD5UL }, - { 0x2FF0UL, 0x2FFBUL }, + { 0x2FF0UL, 0x2FFFUL }, { 0x3004UL, 0x3004UL }, { 0x3012UL, 0x3013UL }, { 0x3020UL, 0x3020UL }, @@ -120,6 +120,7 @@ static const struct range ranges[] = { { 0x3190UL, 0x3191UL }, { 0x3196UL, 0x319FUL }, { 0x31C0UL, 0x31E3UL }, + { 0x31EFUL, 0x31EFUL }, { 0x3200UL, 0x321EUL }, { 0x322AUL, 0x3247UL }, { 0x3250UL, 0x3250UL }, diff --git a/src/libre/class/utf8_So.c b/src/libre/class/utf8_So.c index 2ddd4cd3e..3bb2b2f82 100644 --- a/src/libre/class/utf8_So.c +++ b/src/libre/class/utf8_So.c @@ -89,7 +89,7 @@ static const struct range ranges[] = { { 0x2E80UL, 0x2E99UL }, { 0x2E9BUL, 0x2EF3UL }, { 0x2F00UL, 0x2FD5UL }, - { 0x2FF0UL, 0x2FFBUL }, + { 0x2FF0UL, 0x2FFFUL }, { 0x3004UL, 0x3004UL }, { 0x3012UL, 0x3013UL }, { 0x3020UL, 0x3020UL }, @@ -98,6 +98,7 @@ static const struct range ranges[] = { { 0x3190UL, 0x3191UL }, { 0x3196UL, 0x319FUL }, { 0x31C0UL, 0x31E3UL }, + { 0x31EFUL, 0x31EFUL }, { 0x3200UL, 0x321EUL }, { 0x322AUL, 0x3247UL }, { 0x3250UL, 0x3250UL }, diff --git a/src/libre/class/utf8_assigned.c b/src/libre/class/utf8_assigned.c index bb764f63f..d29b53bf2 100644 --- a/src/libre/class/utf8_assigned.c +++ b/src/libre/class/utf8_assigned.c @@ -272,14 +272,13 @@ static const struct range ranges[] = { { 0x2E80UL, 0x2E99UL }, { 0x2E9BUL, 0x2EF3UL }, { 0x2F00UL, 0x2FD5UL }, - { 0x2FF0UL, 0x2FFBUL }, - { 0x3000UL, 0x303FUL }, + { 0x2FF0UL, 0x303FUL }, { 0x3041UL, 0x3096UL }, { 0x3099UL, 0x30FFUL }, { 0x3105UL, 0x312FUL }, { 0x3131UL, 0x318EUL }, { 0x3190UL, 0x31E3UL }, - { 0x31F0UL, 0x321EUL }, + { 0x31EFUL, 0x321EUL }, { 0x3220UL, 0x3400UL }, { 0x4DBFUL, 0x4E00UL }, { 0x9FFFUL, 0xA48CUL }, @@ -716,6 +715,8 @@ static const struct range ranges[] = { { 0x2CEA1UL, 0x2CEA1UL }, { 0x2CEB0UL, 0x2CEB0UL }, { 0x2EBE0UL, 0x2EBE0UL }, + { 0x2EBF0UL, 0x2EBF0UL }, + { 0x2EE5DUL, 0x2EE5DUL }, { 0x2F800UL, 0x2FA1DUL }, { 0x30000UL, 0x30000UL }, { 0x3134AUL, 0x3134AUL }, From 450d4f490231b90754cfe729ea010c3767cece35 Mon Sep 17 00:00:00 2001 From: Kate F Date: Mon, 30 Oct 2023 15:06:50 +0000 Subject: [PATCH 2/2] Reject nodes with AST flags set for re_is_literal() One concession here is that I'm allowing `(?n)` because we don't currently indicate this in the AST. I'm also explicitly permitting `RE_END_NL`, because by the API contract this is the caller's responsibility. --- src/libre/ast.c | 22 ++++++++++++++++++++-- tests/re_literal/in13.re | 1 + tests/re_literal/in14.re | 1 + tests/re_literal/in15.re | 1 + tests/re_literal/in16.re | 1 + tests/re_literal/in17.re | 1 + tests/re_literal/in18.re | 1 + tests/re_literal/in19.re | 1 + tests/re_literal/in20.re | 1 + tests/re_literal/in21.re | 1 + tests/re_literal/in22.re | 1 + tests/re_literal/in23.re | 1 + tests/re_literal/in24.re | 1 + tests/re_literal/out13.txt | 1 + tests/re_literal/out14.txt | 1 + tests/re_literal/out15.txt | 2 ++ tests/re_literal/out16.txt | 1 + tests/re_literal/out17.txt | 1 + tests/re_literal/out18.txt | 1 + tests/re_literal/out19.txt | 2 ++ tests/re_literal/out20.txt | 1 + tests/re_literal/out21.txt | 2 ++ tests/re_literal/out22.txt | 1 + tests/re_literal/out23.txt | 1 + tests/re_literal/out24.txt | 2 ++ 25 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 tests/re_literal/in13.re create mode 100644 tests/re_literal/in14.re create mode 100644 tests/re_literal/in15.re create mode 100644 tests/re_literal/in16.re create mode 100644 tests/re_literal/in17.re create mode 100644 tests/re_literal/in18.re create mode 100644 tests/re_literal/in19.re create mode 100644 tests/re_literal/in20.re create mode 100644 tests/re_literal/in21.re create mode 100644 tests/re_literal/in22.re create mode 100644 tests/re_literal/in23.re create mode 100644 tests/re_literal/in24.re create mode 100644 tests/re_literal/out13.txt create mode 100644 tests/re_literal/out14.txt create mode 100644 tests/re_literal/out15.txt create mode 100644 tests/re_literal/out16.txt create mode 100644 tests/re_literal/out17.txt create mode 100644 tests/re_literal/out18.txt create mode 100644 tests/re_literal/out19.txt create mode 100644 tests/re_literal/out20.txt create mode 100644 tests/re_literal/out21.txt create mode 100644 tests/re_literal/out22.txt create mode 100644 tests/re_literal/out23.txt create mode 100644 tests/re_literal/out24.txt diff --git a/src/libre/ast.c b/src/libre/ast.c index 2e1d21817..82c52a790 100644 --- a/src/libre/ast.c +++ b/src/libre/ast.c @@ -997,13 +997,31 @@ ast_expr_is_literal(const struct ast_expr *e, *anchor_end = 1; } +done: + for (i = 0; i < count; i++) { if (nodes[i] == NULL || nodes[i]->type != AST_EXPR_LITERAL) { return 0; } - } -done: + /* mask out AST flags that we don't care about; these may be present or not */ + int ast_flags = nodes[i]->flags + & ~(AST_FLAG_FIRST | AST_FLAG_LAST | AST_FLAG_ALWAYS_CONSUMES | AST_FLAG_CAN_CONSUME); + + /* we reject anything else */ + if (ast_flags != 0) { + return 0; + } + + /* mask out re flags that we don't handle here yet (the caller is responsible for these) */ + int re_flags = nodes[i]->re_flags + & ~(RE_END_NL); + + /* and we don't permit any other re_flags */ + if (re_flags != 0) { + return 0; + } + } *n = count + is_end_nl; diff --git a/tests/re_literal/in13.re b/tests/re_literal/in13.re new file mode 100644 index 000000000..fa9f7f5ff --- /dev/null +++ b/tests/re_literal/in13.re @@ -0,0 +1 @@ +^(?i)a$ \ No newline at end of file diff --git a/tests/re_literal/in14.re b/tests/re_literal/in14.re new file mode 100644 index 000000000..2500582f0 --- /dev/null +++ b/tests/re_literal/in14.re @@ -0,0 +1 @@ +(?:x(?i)a) \ No newline at end of file diff --git a/tests/re_literal/in15.re b/tests/re_literal/in15.re new file mode 100644 index 000000000..27e49d98b --- /dev/null +++ b/tests/re_literal/in15.re @@ -0,0 +1 @@ +(?i) \ No newline at end of file diff --git a/tests/re_literal/in16.re b/tests/re_literal/in16.re new file mode 100644 index 000000000..33e13db9d --- /dev/null +++ b/tests/re_literal/in16.re @@ -0,0 +1 @@ +(?i)xy \ No newline at end of file diff --git a/tests/re_literal/in17.re b/tests/re_literal/in17.re new file mode 100644 index 000000000..92e7f56a7 --- /dev/null +++ b/tests/re_literal/in17.re @@ -0,0 +1 @@ +a(?i)xy \ No newline at end of file diff --git a/tests/re_literal/in18.re b/tests/re_literal/in18.re new file mode 100644 index 000000000..9fe02bd25 --- /dev/null +++ b/tests/re_literal/in18.re @@ -0,0 +1 @@ +a(?:x(?i)xy) \ No newline at end of file diff --git a/tests/re_literal/in19.re b/tests/re_literal/in19.re new file mode 100644 index 000000000..297e030e4 --- /dev/null +++ b/tests/re_literal/in19.re @@ -0,0 +1 @@ +a(?:x(?-i)xy) \ No newline at end of file diff --git a/tests/re_literal/in20.re b/tests/re_literal/in20.re new file mode 100644 index 000000000..800e172fd --- /dev/null +++ b/tests/re_literal/in20.re @@ -0,0 +1 @@ +(?i)(?:(?-i)a)(?:x(?-i)xy) \ No newline at end of file diff --git a/tests/re_literal/in21.re b/tests/re_literal/in21.re new file mode 100644 index 000000000..4b3072ef2 --- /dev/null +++ b/tests/re_literal/in21.re @@ -0,0 +1 @@ +(?i)(?:(?-i)a)(?:(?-i)x(?-i)xy) \ No newline at end of file diff --git a/tests/re_literal/in22.re b/tests/re_literal/in22.re new file mode 100644 index 000000000..40352311b --- /dev/null +++ b/tests/re_literal/in22.re @@ -0,0 +1 @@ +(?s)a \ No newline at end of file diff --git a/tests/re_literal/in23.re b/tests/re_literal/in23.re new file mode 100644 index 000000000..f53b1b835 --- /dev/null +++ b/tests/re_literal/in23.re @@ -0,0 +1 @@ +(?x)a \ No newline at end of file diff --git a/tests/re_literal/in24.re b/tests/re_literal/in24.re new file mode 100644 index 000000000..bda0b6e86 --- /dev/null +++ b/tests/re_literal/in24.re @@ -0,0 +1 @@ +(?n)a \ No newline at end of file diff --git a/tests/re_literal/out13.txt b/tests/re_literal/out13.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out13.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out14.txt b/tests/re_literal/out14.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out14.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out15.txt b/tests/re_literal/out15.txt new file mode 100644 index 000000000..82977dfb2 --- /dev/null +++ b/tests/re_literal/out15.txt @@ -0,0 +1,2 @@ +anchors: +literal: diff --git a/tests/re_literal/out16.txt b/tests/re_literal/out16.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out16.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out17.txt b/tests/re_literal/out17.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out17.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out18.txt b/tests/re_literal/out18.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out18.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out19.txt b/tests/re_literal/out19.txt new file mode 100644 index 000000000..f761b32c2 --- /dev/null +++ b/tests/re_literal/out19.txt @@ -0,0 +1,2 @@ +anchors: +literal: axxy diff --git a/tests/re_literal/out20.txt b/tests/re_literal/out20.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out20.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out21.txt b/tests/re_literal/out21.txt new file mode 100644 index 000000000..f761b32c2 --- /dev/null +++ b/tests/re_literal/out21.txt @@ -0,0 +1,2 @@ +anchors: +literal: axxy diff --git a/tests/re_literal/out22.txt b/tests/re_literal/out22.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out22.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out23.txt b/tests/re_literal/out23.txt new file mode 100644 index 000000000..c5a2ff66c --- /dev/null +++ b/tests/re_literal/out23.txt @@ -0,0 +1 @@ +non-literal diff --git a/tests/re_literal/out24.txt b/tests/re_literal/out24.txt new file mode 100644 index 000000000..e9278cb7d --- /dev/null +++ b/tests/re_literal/out24.txt @@ -0,0 +1,2 @@ +anchors: +literal: a