[latex3-commits] [latex3/latex3] main: Expand coverage of variants (see #1257) (695435731)

github at latex-project.org github at latex-project.org
Wed Aug 23 13:43:26 CEST 2023


Repository : https://github.com/latex3/latex3
On branch  : main
Link       : https://github.com/latex3/latex3/commit/695435731d8fff67e83b64ec174078318fabf953

>---------------------------------------------------------------

commit 695435731d8fff67e83b64ec174078318fabf953
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Wed Aug 23 08:16:15 2023 +0100

    Expand coverage of variants (see #1257)
    
    This is the '5+' set (created at least five times in a sweep of TL).


>---------------------------------------------------------------

695435731d8fff67e83b64ec174078318fabf953
 l3kernel/l3file.dtx |  16 ++++--
 l3kernel/l3msg.dtx  |  18 ++++++
 l3kernel/l3prop.dtx |  60 +++++++++++---------
 l3kernel/l3seq.dtx  |  20 +++++--
 l3kernel/l3tl.dtx   | 161 +++++++++++++++++++++++++++++++++++-----------------
 5 files changed, 187 insertions(+), 88 deletions(-)

diff --git a/l3kernel/l3file.dtx b/l3kernel/l3file.dtx
index 206f949f4..40461332e 100644
--- a/l3kernel/l3file.dtx
+++ b/l3kernel/l3file.dtx
@@ -446,7 +446,8 @@
 %
 % \subsection{Writing to files}
 %
-% \begin{function}[updated = 2012-06-05]{\iow_now:Nn, \iow_now:Nx, \iow_now:cn, \iow_now:cx}
+% \begin{function}[updated = 2012-06-05]
+%   {\iow_now:Nn, \iow_now:NV, \iow_now:Nx, \iow_now:cn, \iow_now:cV, \iow_now:cx}
 %   \begin{syntax}
 %     \cs{iow_now:Nn} \meta{stream} \Arg{tokens}
 %   \end{syntax}
@@ -922,7 +923,7 @@
 % \end{function}
 %
 %
-% \begin{function}[updated = 2017-06-26]{\file_input:n}
+% \begin{function}[updated = 2017-06-26]{\file_input:n, \file_input:V}
 %   \begin{syntax}
 %     \cs{file_input:n} \Arg{file name}
 %   \end{syntax}
@@ -1798,7 +1799,11 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\iow_now:Nn, \iow_now:Nx, \iow_now:cn, \iow_now:cx}
+% \begin{macro}
+%   {
+%     \iow_now:Nn, \iow_now:NV, \iow_now:Nx,
+%     \iow_now:cn, \iow_now:cV, \iow_now:cx
+%   }
 %   This routine writes the second argument onto the output stream without
 %   expansion. If this stream isn't open, the output goes to the terminal
 %   instead. If the first argument is no output stream at all, we get an
@@ -1816,7 +1821,7 @@
     \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
       { \tex_immediate:D \tex_write:D #1 { \exp_not:n {#2} } }
   }
-\cs_generate_variant:Nn \iow_now:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3360,7 +3365,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\file_input:n}
+% \begin{macro}{\file_input:n, \file_input:V}
 % \begin{macro}{\@@_input:n, \@@_input:V}
 % \begin{macro}{\@@_input_push:n, \__kernel_file_input_push:n}
 % \begin{macro}{\@@_input_pop:, \__kernel_file_input_pop:}
@@ -3376,6 +3381,7 @@
       { \@@_input:V \l_@@_full_name_tl }
       { \__kernel_file_missing:n {#1} }
   }
+\cs_generate_variant:Nn \file_input:n { V }
 \cs_new_protected:Npx \@@_input:n #1
   {
     \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
diff --git a/l3kernel/l3msg.dtx b/l3kernel/l3msg.dtx
index 7e80cf566..ce3f867d9 100644
--- a/l3kernel/l3msg.dtx
+++ b/l3kernel/l3msg.dtx
@@ -312,6 +312,7 @@
 %     \msg_fatal:nnnn   ,
 %     \msg_fatal:nnn    ,
 %     \msg_fatal:nn     ,
+%     \msg_fatal:nnV    ,
 %     \msg_fatal:nnxxxx ,
 %     \msg_fatal:nnxxx  ,
 %     \msg_fatal:nnxx   ,
@@ -333,6 +334,7 @@
 %     \msg_critical:nnnn   ,
 %     \msg_critical:nnn    ,
 %     \msg_critical:nn     ,
+%     \msg_critical:nnV    ,
 %     \msg_critical:nnxxxx ,
 %     \msg_critical:nnxxx  ,
 %     \msg_critical:nnxx   ,
@@ -360,6 +362,7 @@
 %     \msg_error:nnnn   ,
 %     \msg_error:nnn    ,
 %     \msg_error:nn     ,
+%     \msg_error:nnV    ,
 %     \msg_error:nnxxxx ,
 %     \msg_error:nnxxx  ,
 %     \msg_error:nnxx   ,
@@ -380,7 +383,9 @@
 %     \msg_warning:nnnnn  ,
 %     \msg_warning:nnnn   ,
 %     \msg_warning:nnn    ,
+%     \msg_warning:nnn    ,
 %     \msg_warning:nn     ,
+%     \msg_warning:nnV    ,
 %     \msg_warning:nnxxxx ,
 %     \msg_warning:nnxxx  ,
 %     \msg_warning:nnxx   ,
@@ -402,6 +407,7 @@
 %     \msg_note:nnnn   ,
 %     \msg_note:nnn    ,
 %     \msg_note:nn     ,
+%     \msg_note:nnV    ,
 %     \msg_note:nnxxxx ,
 %     \msg_note:nnxxx  ,
 %     \msg_note:nnxx   ,
@@ -411,6 +417,7 @@
 %     \msg_info:nnnn   ,
 %     \msg_info:nnn    ,
 %     \msg_info:nn     ,
+%     \msg_info:nnV    ,
 %     \msg_info:nnxxxx ,
 %     \msg_info:nnxxx  ,
 %     \msg_info:nnxx   ,
@@ -435,6 +442,7 @@
 %     \msg_term:nnnn   ,
 %     \msg_term:nnn    ,
 %     \msg_term:nn     ,
+%     \msg_term:nnV    ,
 %     \msg_term:nnxxxx ,
 %     \msg_term:nnxxx  ,
 %     \msg_term:nnxx   ,
@@ -444,6 +452,7 @@
 %     \msg_log:nnnn   ,
 %     \msg_log:nnn    ,
 %     \msg_log:nn     ,
+%     \msg_log:nnV    ,
 %     \msg_log:nnxxxx ,
 %     \msg_log:nnxxx  ,
 %     \msg_log:nnxx   ,
@@ -1113,6 +1122,7 @@
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
       \cs_new_protected:cpx { msg_ #1 :nn } ##1##2
         { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } }
+      \cs_generate_variant:cn { msg_ #1 :nnn } { nnV }
       \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6
         {
           \use:x
@@ -1139,6 +1149,7 @@
 %     \msg_fatal:nnnn   ,
 %     \msg_fatal:nnn    ,
 %     \msg_fatal:nn     ,
+%     \msg_fatal:nnV    ,
 %     \msg_fatal:nnxxxx ,
 %     \msg_fatal:nnxxx  ,
 %     \msg_fatal:nnxx   ,
@@ -1173,6 +1184,7 @@
 %     \msg_critical:nnnn   ,
 %     \msg_critical:nnn    ,
 %     \msg_critical:nn     ,
+%     \msg_critical:nnV    ,
 %     \msg_critical:nnxxxx ,
 %     \msg_critical:nnxxx  ,
 %     \msg_critical:nnxx   ,
@@ -1198,6 +1210,7 @@
 %     \msg_error:nnnn   ,
 %     \msg_error:nnn    ,
 %     \msg_error:nn     ,
+%     \msg_error:nnV    ,
 %     \msg_error:nnxxxx ,
 %     \msg_error:nnxxx  ,
 %     \msg_error:nnxx   ,
@@ -1229,6 +1242,7 @@
 %     \msg_warning:nnnn   ,
 %     \msg_warning:nnn    ,
 %     \msg_warning:nn     ,
+%     \msg_warning:nnV    ,
 %     \msg_warning:nnxxxx ,
 %     \msg_warning:nnxxx  ,
 %     \msg_warning:nnxx   ,
@@ -1238,6 +1252,7 @@
 %     \msg_note:nnnn   ,
 %     \msg_note:nnn    ,
 %     \msg_note:nn     ,
+%     \msg_note:nnV    ,
 %     \msg_note:nnxxxx ,
 %     \msg_note:nnxxx  ,
 %     \msg_note:nnxx   ,
@@ -1247,6 +1262,7 @@
 %     \msg_info:nnnn   ,
 %     \msg_info:nnn    ,
 %     \msg_info:nn     ,
+%     \msg_info:nnV    ,
 %     \msg_info:nnxxxx ,
 %     \msg_info:nnxxx  ,
 %     \msg_info:nnxx   ,
@@ -1303,6 +1319,7 @@
 %     \msg_log:nnnn   ,
 %     \msg_log:nnn    ,
 %     \msg_log:nn     ,
+%     \msg_log:nnV    ,
 %     \msg_log:nnxxxx ,
 %     \msg_log:nnxxx  ,
 %     \msg_log:nnxx   ,
@@ -1312,6 +1329,7 @@
 %     \msg_term:nnnn   ,
 %     \msg_term:nnn    ,
 %     \msg_term:nn     ,
+%     \msg_term:nnV    ,
 %     \msg_term:nnxxxx ,
 %     \msg_term:nnxxx  ,
 %     \msg_term:nnxx   ,
diff --git a/l3kernel/l3prop.dtx b/l3kernel/l3prop.dtx
index e7ef6d11f..c272cc568 100644
--- a/l3kernel/l3prop.dtx
+++ b/l3kernel/l3prop.dtx
@@ -167,16 +167,16 @@
 %   {
 %     \prop_put:Nnn,  \prop_put:NnV,  \prop_put:Nno,  \prop_put:Nne, \prop_put:Nnx,
 %     \prop_put:NVn,  \prop_put:NVV,  \prop_put:NVx,  \prop_put:Nvx,
-%     \prop_put:Non,  \prop_put:Noo,  \prop_put:Nxx,
+%     \prop_put:Non,  \prop_put:Nxn,  \prop_put:Noo,  \prop_put:Nxx,
 %     \prop_put:cnn,  \prop_put:cnV,  \prop_put:cno,  \prop_put:cne, \prop_put:cnx,
 %     \prop_put:cVn,  \prop_put:cVV,  \prop_put:cVx,  \prop_put:cvx,
-%     \prop_put:con,  \prop_put:coo,  \prop_put:cxx,
+%     \prop_put:con,  \prop_put:cxn,  \prop_put:coo,  \prop_put:cxx,
 %     \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
 %     \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx,
-%     \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx,
+%     \prop_gput:Non, \prop_gput:cxn, \prop_gput:Noo, \prop_gput:Nxx,
 %     \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
 %     \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
-%     \prop_gput:con, \prop_gput:coo, \prop_gput:cxx
+%     \prop_gput:con, \prop_gput:cxn, \prop_gput:coo, \prop_gput:cxx
 %   }
 %   \begin{syntax}
 %     \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value}
@@ -250,8 +250,8 @@
 %
 % \begin{function}[updated = 2011-08-28]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN,
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN
 %   }
 %   \begin{syntax}
 %     \cs{prop_get:NnN} \meta{property list} \Arg{key} \meta{tl var}
@@ -294,7 +294,11 @@
 %   the \meta{token list variable} is local.  See also \cs{prop_gpop:NnNTF}.
 % \end{function}
 %
-% \begin{function}[added = 2014-07-17, EXP]{\prop_item:Nn, \prop_item:cn}
+% \begin{function}[added = 2014-07-17, EXP]
+%   {
+%     \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne,
+%     \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce
+%   }
 %   \begin{syntax}
 %     \cs{prop_item:Nn} \meta{property list} \Arg{key}
 %   \end{syntax}
@@ -399,8 +403,8 @@
 %
 % \begin{function}[updated = 2012-05-19, TF]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN
 %   }
 %   \begin{syntax}
 %     \cs{prop_get:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \\
@@ -982,8 +986,8 @@
 %
 % \begin{macro}[tested = m3prop002]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:coN
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN
 %   }
 %   Getting an item from a list is very easy: after splitting,
 %   if the key is in the property list, just set the token list variable
@@ -995,8 +999,8 @@
       { \tl_set:Nn #3 {##2} }
       { \tl_set:Nn #3 { \q_no_value } }
   }
-\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No }
-\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co }
+\cs_generate_variant:Nn \prop_get:NnN {     NV , Nv , No , Nx }
+\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1035,7 +1039,11 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[EXP]{\prop_item:Nn, \prop_item:cn}
+% \begin{macro}[EXP]
+%   {
+%     \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne,
+%     \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce
+%   }
 % \begin{macro}[EXP]{\@@_item:nnn}
 %   Getting the value corresponding to a key in a property list in an
 %   expandable fashion simply uses \cs{prop_map_tokens:Nn} to go through
@@ -1053,7 +1061,7 @@
     \str_if_eq:eeT {#1} {#2}
       { \prop_map_break:n { \exp_not:n {#3} } }
   }
-\cs_generate_variant:Nn \prop_item:Nn { c }
+\cs_generate_variant:Nn \prop_item:Nn { NV , No , Ne , c , cV , co , ce }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1154,19 +1162,19 @@
 %   {
 %     \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx,
 %     \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx,
-%     \prop_put:Non, \prop_put:Noo, \prop_put:Nxx,
+%     \prop_put:Non, \prop_put:Nxn, \prop_put:Noo, \prop_put:Nxx,
 %     \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx,
 %     \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx,
-%     \prop_put:con, \prop_put:coo, \prop_put:cxx
+%     \prop_put:con, \prop_put:cxn, \prop_put:coo, \prop_put:cxx
 %   }
 % \begin{macro}[tested = m3prop002]
 %   {
 %     \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
 %     \prop_gput:NVn, \prop_gput:NVV, \prop_hput:NVx, \prop_hput:Nvx,
-%     \prop_gput:Non, \prop_gput:Noo, \prop_gput:Nxx,
+%     \prop_gput:Non, \prop_gput:Nxn, \prop_gput:Noo, \prop_gput:Nxx,
 %     \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
 %     \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
-%     \prop_gput:con, \prop_gput:coo, \prop_gput:cxx
+%     \prop_gput:con, \prop_gput:cxn, \prop_gput:coo, \prop_gput:cxx
 %   }
 % \begin{macro}{\@@_put:NNnn}
 %   Since the branches of \cs{@@_split:NnTF} are used as the replacement
@@ -1196,13 +1204,13 @@
       { #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
   }
 \cs_generate_variant:Nn \prop_put:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , Noo , Nxx }
 \cs_generate_variant:Nn \prop_put:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , coo , cxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Noo , Nxx }
+  {     NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , Noo , Nxx }
 \cs_generate_variant:Nn \prop_gput:Nnn
-  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , coo , cxx }
+  { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , coo , cxx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1307,8 +1315,8 @@
 %
 % \begin{macro}[TF, tested = m3prop004]
 %   {
-%     \prop_get:NnN, \prop_get:NVN, \prop_get:NoN,
-%     \prop_get:cnN, \prop_get:cVN, \prop_get:coN
+%     \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
+%     \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN
 %   }
 %   Getting the value corresponding to a key, keeping track of whether
 %   the key was present or not, is implemented as a conditional (with
@@ -1324,7 +1332,7 @@
       { \prg_return_false: }
   }
 \prg_generate_conditional_variant:Nnn \prop_get:NnN
-  { NV , Nv , No , c , cV , cv , co } { T , F , TF }
+  { NV , Nv , No , Nx , c , cV , cv , co , cx } { T , F , TF }
 %    \end{macrocode}
 % \end{macro}
 %
diff --git a/l3kernel/l3seq.dtx b/l3kernel/l3seq.dtx
index ad14896d4..d9f94569e 100644
--- a/l3kernel/l3seq.dtx
+++ b/l3kernel/l3seq.dtx
@@ -126,8 +126,12 @@
 %
 % \begin{function}[added = 2011-08-15, updated = 2012-07-02]
 %   {
-%     \seq_set_split:Nnn , \seq_set_split:NnV ,
-%     \seq_gset_split:Nnn, \seq_gset_split:NnV
+%     \seq_set_split:Nnn ,
+%     \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV ,
+%     \seq_set_split:Nnx , \seq_set_split:Nxx ,
+%     \seq_gset_split:Nnn,
+%     \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
+%     \seq_gset_split:Nnx , \seq_gset_split:Nxx
 %   }
 %   \begin{syntax}
 %     \cs{seq_set_split:Nnn} \meta{seq~var} \Arg{delimiter} \Arg{token list}
@@ -1266,8 +1270,12 @@
 %
 % \begin{macro}
 %   {
-%     \seq_set_split:Nnn , \seq_set_split:NnV ,
-%     \seq_gset_split:Nnn, \seq_gset_split:NnV
+%     \seq_set_split:Nnn ,
+%     \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV ,
+%     \seq_set_split:Nnx , \seq_set_split:Nxx ,
+%     \seq_gset_split:Nnn,
+%     \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
+%     \seq_gset_split:Nnx, \seq_gset_split:Nxx
 %   }
 % \begin{macro}
 %   {
@@ -1340,8 +1348,8 @@
   }
 \cs_new:Npn \@@_set_split:w #1 \@@_set_split_end:
   { \@@_wrap_item:n {#1} }
-\cs_generate_variant:Nn \seq_set_split:Nnn  { NnV }
-\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV }
+\cs_generate_variant:Nn \seq_set_split:Nnn  { NV , NnV , NVV , Nnx , Nxx }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nnx , Nxx }
 \cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn  { NnV }
 \cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV }
 %    \end{macrocode}
diff --git a/l3kernel/l3tl.dtx b/l3kernel/l3tl.dtx
index 08ed9216e..d4d358679 100644
--- a/l3kernel/l3tl.dtx
+++ b/l3kernel/l3tl.dtx
@@ -177,10 +177,10 @@
 %
 % \begin{function}
 %   {
-%     \tl_put_left:Nn,  \tl_put_left:NV,  \tl_put_left:No,  \tl_put_left:Nx,
-%     \tl_put_left:cn,  \tl_put_left:cV,  \tl_put_left:co,  \tl_put_left:cx,
-%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:No, \tl_gput_left:Nx,
-%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:co, \tl_gput_left:cx
+%     \tl_put_left:Nn,  \tl_put_left:NV,  \tl_put_left:Nv,  \tl_put_left:No,  \tl_put_left:Nx,
+%     \tl_put_left:cn,  \tl_put_left:cV,  \tl_put_left:cv,  \tl_put_left:co,  \tl_put_left:cx,
+%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx,
+%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx
 %   }
 %   \begin{syntax}
 %     \cs{tl_put_left:Nn} \meta{tl~var} \Arg{tokens}
@@ -191,12 +191,10 @@
 %
 % \begin{function}
 %   {
-%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:No, \tl_put_right:Nx,
-%     \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:co, \tl_put_right:cx,
-%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:No,
-%     \tl_gput_right:Nx,
-%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:co,
-%     \tl_gput_right:cx
+%     \tl_put_right:Nn,  \tl_put_right:NV,  \tl_put_right:Nv,  \tl_put_right:No,  \tl_put_right:Nx,
+%     \tl_put_right:cn,  \tl_put_right:cV,  \tl_put_right:cv,  \tl_put_right:co,  \tl_put_right:cx,
+%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, \tl_gput_right:Nx,
+%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, \tl_gput_right:cx
 %   }
 %   \begin{syntax}
 %     \cs{tl_put_right:Nn} \meta{tl~var} \Arg{tokens}
@@ -230,7 +228,7 @@
 % \end{function}
 %
 % \begin{function}[added = 2012-05-24, updated = 2012-06-05, EXP,pTF]
-%   {\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:o}
+%   {\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:o, \tl_if_empty:e}
 %   \begin{syntax}
 %     \cs{tl_if_empty_p:n} \Arg{token list}
 %     \cs{tl_if_empty:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
@@ -270,7 +268,7 @@
 %   category codes are not important.
 % \end{function}
 %
-% \begin{function}[TF]{\tl_if_eq:nn}
+% \begin{function}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV}
 %   \begin{syntax}
 %     \cs{tl_if_eq:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code}
 %   \end{syntax}
@@ -1073,10 +1071,14 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_replace_once:Nnn,  \tl_replace_once:Nxx,
-%     \tl_replace_once:cnn,  \tl_replace_once:cxx,
-%     \tl_greplace_once:Nnn, \tl_greplace_once:Nxx
-%     \tl_greplace_once:cnn, \tl_greplace_once:cxx
+%     \tl_replace_once:Nnn,  \tl_replace_once:NVn,  \tl_replace_once:NnV,
+%     \tl_replace_once:Nxn,  \tl_replace_once:Nnx,  \tl_replace_once:Nxx,
+%     \tl_replace_once:cnn,  \tl_replace_once:cVn,  \tl_replace_once:cnV,
+%     \tl_replace_once:cxn,  \tl_replace_once:cnx,  \tl_replace_once:cxx,
+%     \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_rgeplace_once:NnV,
+%     \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
+%     \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV,
+%     \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
 %   }
 %   \begin{syntax}
 %     \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1090,10 +1092,14 @@
 %
 % \begin{function}[updated = 2011-08-11]
 %   {
-%     \tl_replace_all:Nnn, \tl_replace_all:Nxx,
-%     \tl_replace_all:cnn, \tl_replace_all:cxx
-%     \tl_greplace_all:Nnn, \tl_greplace_all:Nxx,
-%     \tl_greplace_all:cnn, \tl_greplace_all:cxx
+%     \tl_replace_all:Nnn,  \tl_replace_all:NVn,   \tl_replace_all:NnV,
+%     \tl_replace_all:Nxn,  \tl_replace_all:Nnx,   \tl_replace_all:Nxx,
+%     \tl_replace_all:cnn,  \tl_replace_all:cVn,   \tl_replace_all:cnV,
+%     \tl_replace_all:cxn,  \tl_replace_all:cnx,   \tl_replace_all:cxx,
+%     \tl_greplace_all:Nnn, \tl_greplace_all:NVn,  \tl_greplace_all:cnV,
+%     \tl_greplace_all:Nxn, \tl_greplace_all:Nnx,  \tl_greplace_all:Nxx,
+%     \tl_greplace_all:cnn, \tl_greplace_all:cVn,  \tl_greplace_all:cnV,
+%     \tl_greplace_all:cxn, \tl_greplace_all:cnx,  \tl_greplace_all:cxx
 %   }
 %   \begin{syntax}
 %     \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1161,10 +1167,10 @@
 %
 % \begin{function}[updated = 2015-08-11]
 %   {
-%     \tl_set_rescan:Nnn,  \tl_set_rescan:Nno,  \tl_set_rescan:Nnx,
-%     \tl_set_rescan:cnn,  \tl_set_rescan:cno,  \tl_set_rescan:cnx,
-%     \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-%     \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
+%     \tl_set_rescan:Nnn,  \tl_set_rescan:NnV,  \tl_set_rescan:Nno,   \tl_set_rescan:Nnx,
+%     \tl_set_rescan:cnn,  \tl_set_rescan:cnV,  \tl_set_rescan:cno,   \tl_set_rescan:cnx,
+%     \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno,  \tl_gset_rescan:Nnx,
+%     \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno,  \tl_gset_rescan:cnx
 %   }
 %   \begin{syntax}
 %     \cs{tl_set_rescan:Nnn} \meta{tl~var} \Arg{setup} \Arg{tokens}
@@ -1488,13 +1494,13 @@
 %
 % \begin{macro}
 %   {
-%     \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:No, \tl_put_left:Nx,
-%     \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:co, \tl_put_left:cx
+%     \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx,
+%     \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx
 %   }
 % \begin{macro}
 %   {
-%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:No, \tl_gput_left:Nx,
-%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:co, \tl_gput_left:cx
+%     \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx,
+%     \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx
 %   }
 % Adding to the left is done directly to gain a little performance.
 %    \begin{macrocode}
@@ -1508,6 +1514,11 @@
     \__kernel_tl_set:Nx #1
       { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
   }
+\cs_new_protected:Npn \tl_put_left:Nv #1#2
+  {
+    \__kernel_tl_set:Nx #1
+      { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+  }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   {
     \__kernel_tl_set:Nx #1
@@ -1528,6 +1539,11 @@
     \__kernel_tl_gset:Nx #1
       { \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
   }
+\cs_new_protected:Npn \tl_gput_left:Nv #1#2
+  {
+    \__kernel_tl_gset:Nx #1
+      { \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+  }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   {
     \__kernel_tl_gset:Nx #1
@@ -1540,10 +1556,12 @@
   { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
 \cs_generate_variant:Nn \tl_put_left:Nn  { c }
 \cs_generate_variant:Nn \tl_put_left:NV  { c }
+\cs_generate_variant:Nn \tl_put_left:Nv  { c }
 \cs_generate_variant:Nn \tl_put_left:No  { c }
 \cs_generate_variant:Nn \tl_put_left:Nx  { c }
 \cs_generate_variant:Nn \tl_gput_left:Nn { c }
 \cs_generate_variant:Nn \tl_gput_left:NV { c }
+\cs_generate_variant:Nn \tl_gput_left:NV { c }
 \cs_generate_variant:Nn \tl_gput_left:No { c }
 \cs_generate_variant:Nn \tl_gput_left:Nx { c }
 %    \end{macrocode}
@@ -1552,14 +1570,14 @@
 %
 % \begin{macro}
 %   {
-%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:No, \tl_put_right:Nx,
-%     \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:co, \tl_put_right:cx
+%     \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx,
+%     \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx
 %   }
 % \begin{macro}
 %   {
-%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:No,
+%     \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No,
 %     \tl_gput_right:Nx,
-%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:co,
+%     \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co,
 %     \tl_gput_right:cx
 %   }
 % The same on the right.
@@ -1571,6 +1589,11 @@
     \__kernel_tl_set:Nx #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
   }
+\cs_new_protected:Npn \tl_put_right:Nv #1#2
+  {
+    \__kernel_tl_set:Nx #1
+      { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
+  }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   {
     \__kernel_tl_set:Nx #1
@@ -1588,6 +1611,11 @@
     \__kernel_tl_gset:Nx #1
       { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
   }
+\cs_new_protected:Npn \tl_gput_right:Nv #1#2
+  {
+    \__kernel_tl_gset:Nx #1
+      { \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
+  }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   {
     \__kernel_tl_gset:Nx #1
@@ -1600,10 +1628,12 @@
   { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
 \cs_generate_variant:Nn \tl_put_right:Nn  { c }
 \cs_generate_variant:Nn \tl_put_right:NV  { c }
+\cs_generate_variant:Nn \tl_put_right:Nv  { c }
 \cs_generate_variant:Nn \tl_put_right:No  { c }
 \cs_generate_variant:Nn \tl_put_right:Nx  { c }
 \cs_generate_variant:Nn \tl_gput_right:Nn { c }
 \cs_generate_variant:Nn \tl_gput_right:NV { c }
+\cs_generate_variant:Nn \tl_gput_right:Nv { c }
 \cs_generate_variant:Nn \tl_gput_right:No { c }
 \cs_generate_variant:Nn \tl_gput_right:Nx { c }
 %    \end{macrocode}
@@ -1653,13 +1683,13 @@
 %
 % \begin{macro}
 %   {
-%     \tl_set_rescan:Nnn, \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
-%     \tl_set_rescan:cnn, \tl_set_rescan:cno, \tl_set_rescan:cnx
+%     \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
+%     \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx
 %   }
 % \begin{macro}
 %   {
-%     \tl_gset_rescan:Nnn, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-%     \tl_gset_rescan:cnn, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
+%     \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
+%     \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
 %   }
 % \begin{macro}{\tl_rescan:nn, \tl_rescan:nV}
 % \begin{macro}{\@@_rescan_aux:}
@@ -1758,10 +1788,10 @@
     \group_end:
     #1 #2 {#3}
   }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  {     Nno , Nnx }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn  { c , cno , cnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn {     Nno , Nnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn  {     NnV , Nno , Nnx }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn  { c , cnV , cno , cnx }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn {     NnV , Nno , Nnx }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cnV , cno , cnx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -1879,10 +1909,34 @@
 %
 % \subsection{Modifying token list variables}
 %
-% \begin{macro}{\tl_replace_all:Nnn, \tl_replace_all:cnn}
-% \begin{macro}{\tl_greplace_all:Nnn, \tl_greplace_all:cnn}
-% \begin{macro}{\tl_replace_once:Nnn, \tl_replace_once:cnn}
-% \begin{macro}{\tl_greplace_once:Nnn, \tl_greplace_once:cnn}
+% \begin{macro}
+%   {
+%     \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV,
+%     \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx,
+%     \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV,
+%     \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx
+%   }
+% \begin{macro}
+%   {
+%     \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
+%     \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx,
+%     \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
+%     \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx
+%   }
+% \begin{macro}
+%   {
+%     \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV,
+%     \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx,
+%     \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV,
+%     \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx
+%   }
+% \begin{macro}
+%   {
+%     \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_replace_once:NnV,
+%     \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
+%     \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_replace_once:cnV,
+%     \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
+%   }
 %   All of the \texttt{replace} functions call \cs{@@_replace:NnNNNnn}
 %   with appropriate arguments.  The first two arguments are explained
 %   later.  The next controls whether the replacement function calls
@@ -1902,10 +1956,14 @@
   { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx  }
 \cs_new_protected:Npn \tl_greplace_all:Nnn
   { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx }
-\cs_generate_variant:Nn \tl_replace_once:Nnn  { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_greplace_once:Nnn { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_replace_all:Nnn   { Nxx , c , cxx }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn  { Nxx , c , cxx }
+\cs_generate_variant:Nn \tl_replace_once:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn
+  { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2137,7 +2195,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[pTF]{\tl_if_empty:n, \tl_if_empty:V}
+% \begin{macro}[pTF]{\tl_if_empty:n, \tl_if_empty:V, \tl_if_empty:e}
 %   The \cs{if:w} triggers the expansion of \cs{tl_to_str:n} which converts the
 %   argument to a string: this is empty if and only if the argument is.  Then
 %   |\if:w \scan_stop: ... \scan_stop:| is \texttt{true} if and only if the
@@ -2155,7 +2213,7 @@
     \fi:
   }
 \prg_generate_conditional_variant:Nnn \tl_if_empty:n
-  { V } { p , TF , T , F }
+  { V , e } { p , TF , T , F }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2252,7 +2310,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[TF]{\tl_if_eq:nn}
+% \begin{macro}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV}
 %   A simple store and compare routine.
 %    \begin{macrocode}
 \prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F ,  TF }
@@ -2268,6 +2326,7 @@
       \prg_return_false:
     \fi:
   }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV } { TF , T , F }
 %    \end{macrocode}
 % \end{macro}
 %





More information about the latex3-commits mailing list.