[latex3-commits] [git/LaTeX3-latex3-latex3] regex-callout: Detect misuses of l3regex callouts in places they don't belong (ded898038)
Bruno Le Floch
blflatex at gmail.com
Sat May 15 18:37:32 CEST 2021
Repository : https://github.com/latex3/latex3
On branch : regex-callout
Link : https://github.com/latex3/latex3/commit/ded89803826ae1af8c1a097c3c1084df026fbe88
>---------------------------------------------------------------
commit ded89803826ae1af8c1a097c3c1084df026fbe88
Author: Bruno Le Floch <blflatex at gmail.com>
Date: Sun Jul 19 02:16:49 2020 +0200
Detect misuses of l3regex callouts in places they don't belong
>---------------------------------------------------------------
ded89803826ae1af8c1a097c3c1084df026fbe88
l3kernel/l3regex.dtx | 28 +++++++++++++++++++---------
l3kernel/testfiles/m3regex011.lvt | 1 +
l3kernel/testfiles/m3regex011.tlg | 21 +++++++++++++++++++++
3 files changed, 41 insertions(+), 9 deletions(-)
diff --git a/l3kernel/l3regex.dtx b/l3kernel/l3regex.dtx
index 34b812899..2c9d05c53 100644
--- a/l3kernel/l3regex.dtx
+++ b/l3kernel/l3regex.dtx
@@ -2610,7 +2610,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_compile_raw_error:N #1
{
- \__kernel_msg_error:nnx { regex } { bad-escape } {#1}
+ \__kernel_msg_error:nnx { regex } { bad-escape } { \iow_char:N\\ #1 }
\@@_compile_raw:N #1
}
% \end{macrocode}
@@ -3143,18 +3143,28 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_compile_special_group_C:w #1#2
{
- \@@_two_if_eq:NNNNTF #1 #2 \@@_compile_special:N \c_left_brace_str
- {
- \tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
- \@@_compile_C_loop:NN
- }
+ \@@_if_in_class_or_catcode:TF
{
- \__kernel_msg_error:nnn { regex } { missing-lbrace } { (?C }
+ \__kernel_msg_error:nnn { regex } { bad-escape } { (?C }
\@@_compile_raw:N (
\@@_compile_raw:N ?
\@@_compile_raw:N C
#1 #2
}
+ {
+ \@@_two_if_eq:NNNNTF #1 #2 \@@_compile_special:N \c_left_brace_str
+ {
+ \tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+ \@@_compile_C_loop:NN
+ }
+ {
+ \__kernel_msg_error:nnn { kernel } { missing-lbrace } { (?C }
+ \@@_compile_raw:N (
+ \@@_compile_raw:N ?
+ \@@_compile_raw:N C
+ #1 #2
+ }
+ }
}
\cs_new:Npn \@@_compile_C_loop:NN #1#2
{
@@ -7449,7 +7459,7 @@
% \begin{macrocode}
\__kernel_msg_new:nnnn { regex } { bad-escape }
{
- Invalid~escape~'\iow_char:N\\#1'~
+ Invalid~escape~'#1'~
\@@_if_in_cs:TF { within~a~control~sequence. }
{
\@@_if_in_class:TF
@@ -7458,7 +7468,7 @@
}
}
{
- The~escape~sequence~'\iow_char:N\\#1'~may~not~appear~
+ The~escape~sequence~'#1'~may~not~appear~
\@@_if_in_cs:TF
{
within~a~control~sequence~test~introduced~by~
diff --git a/l3kernel/testfiles/m3regex011.lvt b/l3kernel/testfiles/m3regex011.lvt
index 53f8d874a..0afeb89c4 100644
--- a/l3kernel/testfiles/m3regex011.lvt
+++ b/l3kernel/testfiles/m3regex011.lvt
@@ -55,6 +55,7 @@
{ / }
\l_tmpa_tl
\tl_log:N \l_tmpa_tl
+ \regex_show:n { \cL (?C{}) Y }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/l3kernel/testfiles/m3regex011.tlg b/l3kernel/testfiles/m3regex011.tlg
index 5306c5d7d..b8ec2797f 100644
--- a/l3kernel/testfiles/m3regex011.tlg
+++ b/l3kernel/testfiles/m3regex011.tlg
@@ -34,6 +34,27 @@ TEST 3: Callouts with (?C...)
============================================================
> \l_tmpa_tl=[\aa {]}\bb .
> \l_tmpa_tl=[\aa {/]/}\bb .
+! LaTeX3 Error: Invalid escape '(?C' following a category test.
+For immediate help type H <return>.
+ ...
+l. ... }
+The escape sequence '(?C' may not appear following a category test such as
+'\cL' because it does not match exactly one character.
+LaTeX3 Warning: Braced quantifier '{' may not be followed by '}'.
+LaTeX3 Warning: Extra right parenthesis ignored in regular expression.
+> Compiled regex {\cL (?C{})Y}:
++-branch
+ Match
+ categories L, class
+ char code 40
+ char code 63
+ char code 67
+ char code 123
+ char code 125
+ char code 41
+ char code 89.
+<recently read> }
+l. ... }
============================================================
============================================================
TEST 3: Peek regex
More information about the latex3-commits
mailing list.