[latex3-commits] [l3svn] r7384 - Use different functions to patch definitions of conditionals

noreply at latex-project.org noreply at latex-project.org
Mon Jul 17 02:38:38 CEST 2017


Author: bruno
Date: 2017-07-17 02:38:38 +0200 (Mon, 17 Jul 2017)
New Revision: 7384

Modified:
   trunk/l3kernel/expl3.dtx
   trunk/l3kernel/l3basics.dtx
   trunk/l3kernel/l3box.dtx
   trunk/l3kernel/l3candidates.dtx
   trunk/l3kernel/l3expan.dtx
   trunk/l3kernel/l3flag.dtx
   trunk/l3kernel/l3fp-convert.dtx
   trunk/l3kernel/l3int.dtx
   trunk/l3kernel/l3keys.dtx
   trunk/l3kernel/l3msg.dtx
   trunk/l3kernel/l3prg.dtx
   trunk/l3kernel/l3skip.dtx
   trunk/l3kernel/l3str.dtx
   trunk/l3kernel/l3tl.dtx
   trunk/l3kernel/l3token.dtx
   trunk/l3kernel/testfiles/m3expl001.luatex.tlg
   trunk/l3kernel/testfiles/m3expl001.ptex.tlg
   trunk/l3kernel/testfiles/m3expl001.tlg
   trunk/l3kernel/testfiles/m3expl001.uptex.tlg
   trunk/l3kernel/testfiles/m3expl001.xetex.tlg
   trunk/l3kernel/testfiles/m3expl003.luatex.tlg
   trunk/l3kernel/testfiles/m3expl003.ptex.tlg
   trunk/l3kernel/testfiles/m3expl003.tlg
   trunk/l3kernel/testfiles/m3expl003.uptex.tlg
   trunk/l3kernel/testfiles/m3expl003.xetex.tlg
Log:
Use different functions to patch definitions of conditionals

That removes the need to test things in the patching code.
Also give the sensible signature to patching functions.


Modified: trunk/l3kernel/expl3.dtx
===================================================================
--- trunk/l3kernel/expl3.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/expl3.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1465,7 +1465,7 @@
       }
     \cs_set_protected:Npn \box_rotate:Nn #1#2
       { \hbox_set:Nn #1 { \rotatebox {#2} { \box_use:N #1 } } }
-    \__debug_patch_args:nNw { {#1} { (#2) } { (#3) } }
+    \__debug_patch_args:nNNpn { {#1} { (#2) } { (#3) } }
     \cs_set_protected:Npn \box_resize_to_wd_and_ht_plus_dp:Nnn #1#2#3
       {
         \hbox_set:Nn #1
@@ -1476,7 +1476,7 @@
               { \box_use:N #1 }
           }
       }
-    \__debug_patch_args:nNw { {#1} { (#2) } }
+    \__debug_patch_args:nNNpn { {#1} { (#2) } }
     \cs_set_protected:Npn \box_resize_to_ht_plus_dp:Nn #1#2
       {
         \hbox_set:Nn #1
@@ -1485,7 +1485,7 @@
               { \box_use:N #1 }
           }
       }
-    \__debug_patch_args:nNw { {#1} { (#2) } }
+    \__debug_patch_args:nNNpn { {#1} { (#2) } }
     \cs_set_protected:Npn \box_resize_to_wd:Nn #1#2
       {
         \hbox_set:Nn #1

Modified: trunk/l3kernel/l3basics.dtx
===================================================================
--- trunk/l3kernel/l3basics.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3basics.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1261,42 +1261,57 @@
 %   nested.  These functions are only created if debugging is enabled.
 % \end{function}
 %
-% \begin{function}{\__debug_patch:nnNw}
+% \begin{function}{\__debug_patch:nnNNpn}
 %   \begin{syntax}
-%     \cs{__debug_patch:nnNw} \Arg{before} \Arg{after} \meta{definition} \ldots{}
+%     \cs{__debug_patch:nnNNpn} \Arg{before} \Arg{after}
+%     \meta{definition} \meta{function} \meta{parameters} \Arg{code}
 %   \end{syntax}
 %   If debugging is not enabled, this function ignores the \meta{before}
 %   and \meta{after} code and performs the \meta{definition} with no
-%   patching.  Otherwise it adds the \meta{before} and \meta{after}
-%   tokens (which can involve |#1| and so on) in the \meta{definition}
-%   that follows.  The \meta{definition} must start with \cs{cs_new:Npn}
-%   or \cs{cs_set:Npn} or \cs{cs_gset:Npn} or
-%   \cs{prg_new_conditional:Npnn} or their protected counterparts.
-%   Other cases can be added as needed.
+%   patching.  Otherwise it replaces \meta{code} by \meta{before}
+%   \meta{code} \meta{after} (which can involve |#1| and so on) in the
+%   \meta{definition} that follows.  The \meta{definition} must start
+%   with \cs{cs_new:Npn} or \cs{cs_set:Npn} or \cs{cs_gset:Npn} or their
+%   \texttt{_protected} counterparts.  Other cases can be added as
+%   needed.
 % \end{function}
 %
-% \begin{function}{\__debug_patch_args:nNw}
+% \begin{function}{\__debug_patch_conditional:nNNpnn}
 %   \begin{syntax}
-%     \cs{__debug_patch_args:nNw} \Arg{arguments} \meta{definition} \ldots{}
+%     \cs{__debug_patch_conditional:nNNpn} \Arg{before}
+%     \meta{definition} \meta{conditional} \meta{parameters} \Arg{type} \Arg{code}
 %   \end{syntax}
-%   Like \cs{__debug_patch:nnNw}, this tweaks the following definition,
-%   but from the \enquote{inside out} (and if debugging is not enabled,
-%   the \meta{arguments} are ignored).  Namely, it replaces |#1|, |#2|
-%   and so on in the \meta{replacement text} of the definition as
-%   indicated by the \meta{arguments}.  More precisely, a temporary
-%   function is defined using the \meta{definition} with the
-%   \meta{parameter text} and \meta{replacement text}, then the result
-%   of expanding that function once in front of the \meta{arguments} is
-%   used as \meta{parameter text} when defining the actual function.
-%   For instance,
+%   Similar to \cs{__debug_patch:nnNNpn} for conditionals, namely
+%   \meta{definition} must be \cs{prg_new_conditional:Npnn} or its
+%   \texttt{_protected} counterpart.  There is no \meta{after} code
+%   because that would interfere with the action of the conditional.
+% \end{function}
+%
+% \begin{function}
+%   {\__debug_patch_args:nNNpn, \__debug_patch_conditional_args:nNNpnn}
+%   \begin{syntax}
+%     \cs{__debug_patch_args:nNNpn} \Arg{arguments}
+%     \meta{definition} \meta{function} \meta{parameters} \Arg{code}
+%   \end{syntax}
+%   Like \cs{__debug_patch:nnNNpn}, this tweaks the following
+%   definition, but from the \enquote{inside out} (and if debugging is
+%   not enabled, the \meta{arguments} are ignored).  It replaces |#1|,
+%   |#2| and so on in the \meta{code} of the definition as indicated by
+%   the \meta{arguments}.  More precisely, a temporary function is
+%   defined using the \meta{definition} with the \meta{parameters} and
+%   \meta{code}, then the result of expanding that function once in
+%   front of the \meta{arguments} is used instead of the \meta{code}
+%   when defining the actual function.  For instance,
 %   \begin{quote}
-%     \cs{__debug_patch_args:nNw} |{ { (#1) } }| \\
+%     \cs{__debug_patch_args:nNNpn} |{ { (#1) } }| \\
 %     \cs{cs_new:Npn} \cs{int_eval:n} |#1| \\
 %     ~~|{ \__int_value:w \__int_eval:w #1 \__int_eval_end: }|
 %   \end{quote}
 %   replaces |#1| by |(#1)| in the definition of \cs{int_eval:n} when
-%   debugging is enabled.
-%   This fails if the \meta{replacement text} contains~|##|.
+%   debugging is enabled.  This fails if the \meta{code} contains~|##|.
+%   The \cs{__debug_patch_conditional_args:nNNpnn} function is for use
+%   before \cs{prg_new_conditional:Npnn} or its \texttt{_protected}
+%   counterpart.
 % \end{function}
 %
 % \begin{function}{\__kernel_register_show:N, \__kernel_register_show:c}
@@ -1927,73 +1942,45 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}[int]{\__debug_patch:nnNw}
-% \begin{macro}[aux,EXP]{\__debug_patch_case:N}
+% \begin{macro}[int]
+%   {\__debug_patch:nnNNpn, \__debug_patch_conditional:nNNpnn}
 % \begin{macro}[aux]
-%   {
-%     \__debug_patch_param:NNnnNnp,
-%     \__debug_patch_cs:nnNNnn,
-%     \__debug_patch_conditional:nnNNnnn
-%   }
-%   When debugging is not enabled, \cs{__debug_patch:nnNw} throws the
-%   patch away.  Otherwise it can be followed by \cs{cs_new:Npn} or
-%   \cs{prg_new_conditional:Npnn} or their protected counterparts.  In
-%   each case, grab the name of the function to be defined and its
-%   parameters using \cs{__debug_patch_param:w} then insert tokens
-%   before and after the definition.  Of course for a conditional one
-%   should likely not insert anything after the code.
+%   {\__debug_patch_aux:nnNNnn, \__debug_patch_aux:nNNnnn}
+%   When debugging is not enabled, \cs{__debug_patch:nnNNpn} and
+%   \cs{__debug_patch_conditional:nNNpnn} throw the patch away.
+%   Otherwise they can be followed by \cs{cs_new:Npn} (or similar), and
+%   \cs{prg_new_conditional:Npnn} (or similar), respectively.  In each
+%   case, grab the name of the function to be defined and its parameters
+%   then insert tokens before and/or after the definition.
 %    \begin{macrocode}
 \__debug:TF
   {
-    \cs_set_protected:Npn \__debug_patch:nnNw #1#2#3
-      {
-        \tex_ifcase:D \__debug_patch_case:N #3
-        \or:
-          \exp_after:wN \__debug_patch_param:NNnnNnp
-          \exp_after:wN \__debug_patch_cs:nnNNnn
-        \else:
-          \exp_after:wN \__debug_patch_param:NNnnNnp
-          \exp_after:wN \__debug_patch_conditional:nnNNnnn
-        \fi:
-        \use_none:nn {#1} {#2} #3
-      }
-    \cs_set:Npn \__debug_patch_case:N #1
-      {
-        \if_meaning:w #1 \cs_new_protected:Npn  1~ \fi:
-        \if_meaning:w #1 \cs_new:Npn            1~ \fi:
-        \if_meaning:w #1 \cs_set_protected:Npn  1~ \fi:
-        \if_meaning:w #1 \cs_set:Npn            1~ \fi:
-        \if_meaning:w #1 \cs_gset_protected:Npn 1~ \fi:
-        \if_meaning:w #1 \cs_gset:Npn           1~ \fi:
-        \if_meaning:w #1 \prg_new_protected_conditional:Npnn 2~ \fi:
-        \if_meaning:w #1 \prg_new_conditional:Npnn           2~ \fi:
-        0~ %
-        \__msg_kernel_error:nnx { kernel } { debug-unpatchable }
-          { \token_to_str:N #1 }
-      }
-    \cs_set_protected:Npn \__debug_patch_param:NNnnNnp #1#2#3#4#5#6#7#
-      { #1 {#3} {#4} #5 #6 {#7} }
-    \cs_set_protected:Npn \__debug_patch_cs:nnNNnn #1#2#3#4#5#6
+    \cs_set_protected:Npn \__debug_patch:nnNNpn #1#2#3#4#5#
+      { \__debug_patch_aux:nnNNnn {#1} {#2} #3 #4 {#5} }
+    \cs_set_protected:Npn \__debug_patch_conditional:nNNpnn #1#2#3#4#
+      { \__debug_patch_aux:nNNnnn {#1} #2 #3 {#4} }
+    \cs_set_protected:Npn \__debug_patch_aux:nnNNnn #1#2#3#4#5#6
       { #3 #4 #5 { #1 #6 #2 } }
-    \cs_set_protected:Npn \__debug_patch_conditional:nnNNnnn
-        #1#2#3#4#5#6#7
-      { #3 #4 #5 {#6} { #1 #7 #2 } }
+    \cs_set_protected:Npn \__debug_patch_aux:nNNnnn #1#2#3#4#5#6
+      { #2 #3 #4 {#5} { #1 #6 } }
   }
-  { \cs_set_protected:Npn \__debug_patch:nnNw #1#2 { } }
+  {
+    \cs_set_protected:Npn \__debug_patch:nnNNpn #1#2 { }
+    \cs_set_protected:Npn \__debug_patch_conditional:nNNpnn #1 { }
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
-% \end{macro}
 %
-% \begin{macro}[int]{\__debug_patch_args:nNw}
+% \begin{macro}[int]
+%   {\__debug_patch_args:nNNpn, \__debug_patch_conditional_args:nNNpnn}
 % \begin{macro}[aux]
 %   {
 %     \__debug_tmp:w,
-%     \__debug_patch_args_param:NNnNnp,
-%     \__debug_patch_args_cs:nNNnn,
-%     \__debug_patch_args_conditional:nNNnnn
+%     \__debug_patch_args_aux:nNNnn,
+%     \__debug_patch_args_aux:nNNnnn
 %   }
-%   See \cs{__debug_patch:nnNw}.  The first argument is something like
+%   See \cs{__debug_patch:nnNNpn}.  The first argument is something like
 %   |{#1}{(#2)}|.  Define a temporary macro using the \meta{parameters}
 %   and \meta{code} of the definition that follows, then expand that
 %   temporary macro in front of the first argument to obtain new
@@ -2003,35 +1990,27 @@
 %    \begin{macrocode}
 \__debug:TF
   {
-    \cs_set_protected:Npn \__debug_patch_args:nNw #1#2
+    \cs_set_protected:Npn \__debug_patch_args:nNNpn #1#2#3#4#
+      { \__debug_patch_args_aux:nNNnn {#1} #2 #3 {#4} }
+    \cs_set_protected:Npn \__debug_patch_conditional_args:nNNpnn #1#2#3#4#
+      { \__debug_patch_args_aux:nNNnnn {#1} #2 #3 {#4} }
+    \cs_set_protected:Npn \__debug_patch_args_aux:nNNnn #1#2#3#4#5
       {
-        \tex_ifcase:D \__debug_patch_case:N #2
-        \or:
-          \exp_after:wN \__debug_patch_args_param:NNnNnp
-          \exp_after:wN \__debug_patch_args_cs:nNNnn
-        \else:
-          \exp_after:wN \__debug_patch_args_param:NNnNnp
-          \exp_after:wN \__debug_patch_args_conditional:nNNnnn
-        \fi:
-        \use_none:n {#1} #2
-      }
-    \cs_set_protected:Npn \__debug_patch_args_param:NNnNnp #1#2#3#4#5#6#
-      { #1 {#3} #4 #5 {#6} }
-    \cs_set_protected:Npn \__debug_patch_args_cs:nNNnn #1#2#3#4#5
-      {
         \cs_set:Npn \__debug_tmp:w #4 {#5}
-        \exp_after:wN \__debug_patch_cs:nnNNnn \exp_after:wN
+        \exp_after:wN \__debug_patch_aux:nnNNnn \exp_after:wN
           { \__debug_tmp:w #1 } { } #2 #3 {#4} { }
       }
-    \cs_set_protected:Npn \__debug_patch_args_conditional:nNNnnn
-        #1#2#3#4#5#6
+    \cs_set_protected:Npn \__debug_patch_args_aux:nNNnnn #1#2#3#4#5#6
       {
         \cs_set:Npn \__debug_tmp:w #4 {#6}
-        \exp_after:wN \__debug_patch_conditional:nnNNnnn \exp_after:wN
-          { \__debug_tmp:w #1 } { } #2 #3 {#4} {#5} { }
+        \exp_after:wN \__debug_patch_aux:nNNnnn \exp_after:wN
+          { \__debug_tmp:w #1 } #2 #3 {#4} {#5} { }
       }
   }
-  { \cs_set_protected:Npn \__debug_patch_args:nNw #1 { } }
+  {
+    \cs_set_protected:Npn \__debug_patch_args:nNNpn #1 { }
+    \cs_set_protected:Npn \__debug_patch_conditional_args:nNNpnn #1 { }
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2366,19 +2345,19 @@
       #5 {#1} {#2} {#3} {#4}
     \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5
   }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   { \__debug_chk_cs_exist:c { #5 _p : #6    } } { }
 \cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3 _p : #4    }    { #5 _p : #6    } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   { \__debug_chk_cs_exist:c { #5    : #6 TF } } { }
 \cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3    : #4 TF }    { #5    : #6 TF } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   { \__debug_chk_cs_exist:c { #5    : #6 T  } } { }
 \cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3    : #4 T  }    { #5    : #6 T  } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   { \__debug_chk_cs_exist:c { #5    : #6  F } } { }
 \cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3    : #4  F }    { #5    : #6  F } }
@@ -2714,7 +2693,7 @@
 %   issued. We have to make sure we don't put the argument into the
 %   conditional processing since it may be an |\if...| type function!
 %    \begin{macrocode}
-\__debug_patch:nnNw { }
+\__debug_patch:nnNNpn { }
   { \__debug_log:x { Defining~\token_to_str:N #1~ \msg_line_context: } }
 \cs_set_protected:Npn \__chk_if_free_cs:N #1
   {

Modified: trunk/l3kernel/l3box.dtx
===================================================================
--- trunk/l3kernel/l3box.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3box.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -949,13 +949,13 @@
 %   When debugging, the dimension expression |#2| is surrounded by
 %   parentheses to catch early termination.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \box_set_dp:Nn #1#2
   { \box_dp:N #1 \__dim_eval:w #2 \__dim_eval_end: }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \box_set_ht:Nn #1#2
   { \box_ht:N #1 \__dim_eval:w #2 \__dim_eval_end: }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \box_set_wd:Nn #1#2
   { \box_wd:N #1 \__dim_eval:w #2 \__dim_eval_end: }
 \cs_generate_variant:Nn \box_set_ht:Nn { c }
@@ -988,16 +988,16 @@
 %   When debugging, the dimension expression |#1| is surrounded by
 %   parentheses to catch early termination.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
 \cs_new_protected:Npn \box_move_left:nn #1#2
   { \tex_moveleft:D \__dim_eval:w #1 \__dim_eval_end: #2 }
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
 \cs_new_protected:Npn \box_move_right:nn #1#2
   { \tex_moveright:D \__dim_eval:w #1 \__dim_eval_end: #2 }
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
 \cs_new_protected:Npn \box_move_up:nn #1#2
   { \tex_raise:D \__dim_eval:w #1 \__dim_eval_end: #2 }
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
 \cs_new_protected:Npn \box_move_down:nn #1#2
   { \tex_lower:D \__dim_eval:w #1 \__dim_eval_end: #2 }
 %    \end{macrocode}
@@ -1196,7 +1196,7 @@
 %   Storing material in a horizontal box with a specified width.
 %   Again, put the dimension expression in parentheses when debugging.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} }
 \cs_new_protected:Npn \hbox_set_to_wd:Nnn #1#2#3
   {
     \tex_setbox:D #1 \tex_hbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1242,7 +1242,7 @@
 % \begin{macro}{\hbox_gset_to_wd:Nnw, \hbox_gset_to_wd:cnw}
 %   Combining the above ideas.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \hbox_set_to_wd:Nnw #1#2
   {
     \tex_setbox:D #1 \tex_hbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1262,7 +1262,7 @@
 %  \testfile*
 %   Put a horizontal box directly into the input stream.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
 \cs_new_protected:Npn \hbox_to_wd:nn #1#2
    {
      \tex_hbox:D to \__dim_eval:w #1 \__dim_eval_end:
@@ -1323,7 +1323,7 @@
 % \testfile*
 %   Put a vertical box directly into the input stream.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } {#2} }
+\__debug_patch_args:nNNpn { { (#1) } {#2} }
 \cs_new_protected:Npn \vbox_to_ht:nn #1#2
   {
     \tex_vbox:D to \__dim_eval:w #1 \__dim_eval_end:
@@ -1379,7 +1379,7 @@
 %  \testfile*
 %  Storing material in a vertical box with a specified height.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} }
 \cs_new_protected:Npn \vbox_set_to_ht:Nnn #1#2#3
   {
     \tex_setbox:D #1 \tex_vbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1426,7 +1426,7 @@
 % \begin{macro}{\vbox_gset_to_ht:Nnw, \vbox_gset_to_ht:cnw}
 %   A combination of the above ideas.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \vbox_set_to_ht:Nnw #1#2
   {
     \tex_setbox:D #1 \tex_vbox:D to \__dim_eval:w #2 \__dim_eval_end:
@@ -1458,7 +1458,7 @@
 % \testfile*
 %   Splitting a vertical box in two.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} {#2} { (#3) } }
+\__debug_patch_args:nNNpn { {#1} {#2} { (#3) } }
 \cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3
   { \tex_setbox:D #1 \tex_vsplit:D #2 to \__dim_eval:w #3 \__dim_eval_end: }
 %    \end{macrocode}

Modified: trunk/l3kernel/l3candidates.dtx
===================================================================
--- trunk/l3kernel/l3candidates.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3candidates.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1038,7 +1038,7 @@
 %   Trimming from the left- and right-hand edges of the box is easy: kern the
 %   appropriate parts off each side.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} { (#4) } {#5} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} { (#4) } {#5} }
 \cs_new_protected:Npn \box_trim:Nnnnn #1#2#3#4#5
   {
     \hbox_set:Nn \l_@@_internal_box
@@ -1105,7 +1105,7 @@
 %   dimensions. As a result, there are some things to watch out for in the
 %   vertical direction.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } {#3} { (#4) } {#5} }
+\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} { (#4) } {#5} }
 \cs_new_protected:Npn \box_viewport:Nnnnn #1#2#3#4#5
   {
     \hbox_set:Nn \l_@@_internal_box
@@ -1804,7 +1804,7 @@
 %    \begin{macrocode}
 \cs_if_exist:NTF \pdftex_uniformdeviate:D
   {
-    \__debug_patch_args:nNw { { (#1) } { (#2) } }
+    \__debug_patch_args:nNNpn { { (#1) } { (#2) } }
     \cs_new:Npn \int_rand:nn #1#2
       {
         \exp_after:wN \@@_rand:ww
@@ -2179,7 +2179,7 @@
 % \begin{macro}{\sys_gset_rand_seed:n}
 %   The primitive always assigns the seed globally.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new_protected:Npn \sys_gset_rand_seed:n #1
   { \pdftex_setrandomseed:D \__int_eval:w #1 \__int_eval_end: }
 %    \end{macrocode}

Modified: trunk/l3kernel/l3expan.dtx
===================================================================
--- trunk/l3kernel/l3expan.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3expan.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1476,7 +1476,7 @@
 %   iterate through the comma list of variant argument specifiers, which
 %   we first convert to a string: the reason is explained later.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_cs_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_cs_exist:N #1 } { }
 \cs_new_protected:Npn \cs_generate_variant:Nn #1#2
   {
     \@@_generate_variant:N #1
@@ -1788,7 +1788,7 @@
 %   \cs{cs_new_protected:Npx}.  Then define the variant by
 %   combining the |\exp_args:N #3| variant and the base function.
 %    \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   {
     \cs_if_free:NF #4
       {

Modified: trunk/l3kernel/l3flag.dtx
===================================================================
--- trunk/l3kernel/l3flag.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3flag.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -196,7 +196,7 @@
 %   When the option \texttt{check-declarations} is used, check for the
 %   function defined by \cs{flag_new:n}.
 %    \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   { \exp_args:Nc \__debug_chk_var_exist:N { flag~#1 } } { }
 \cs_new_protected:Npn \flag_clear:n #1 { \@@_clear:wn 0 ; {#1} }
 \cs_new_protected:Npn \@@_clear:wn #1 ; #2
@@ -275,7 +275,7 @@
 % \begin{macro}[EXP, pTF]{\flag_if_raised:n}
 %   Test if the flag has a non-zero height, by checking the |0| control sequence.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \@@_chk_exist:n {#1} } { }
+\__debug_patch_conditional:nNNpnn { \@@_chk_exist:n {#1} }
 \prg_new_conditional:Npnn \flag_if_raised:n #1 { p , T , F , TF }
   {
     \if_cs_exist:w flag~#1~0 \cs_end:
@@ -292,7 +292,7 @@
 %   Extract the value of the flag by going through all of the
 %   control sequences starting from |0|.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \@@_chk_exist:n {#1} } { }
+\__debug_patch:nnNNpn { \@@_chk_exist:n {#1} } { }
 \cs_new:Npn \flag_height:n #1 { \@@_height_loop:wn 0; {#1} }
 \cs_new:Npn \@@_height_loop:wn #1 ; #2
   {

Modified: trunk/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/l3kernel/l3fp-convert.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3fp-convert.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -390,7 +390,7 @@
 %   performed by \cs{@@_mul_npos_o:Nww}, and cancelled by
 %   \cs{prg_do_nothing:} here.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \dim_to_fp:n #1
   {
     \exp_after:wN \@@_from_dim_test:ww

Modified: trunk/l3kernel/l3int.dtx
===================================================================
--- trunk/l3kernel/l3int.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3int.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1010,7 +1010,7 @@
 %   or directly in the input stream.
 %   When debugging, use parentheses to catch early termination.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \int_eval:n #1
   { \@@_value:w \@@_eval:w #1 \@@_eval_end: }
 %    \end{macrocode}
@@ -1028,7 +1028,7 @@
 %   evaluation.  The absolute value is obtained by removing a leading
 %   sign if any.  All three functions expand in two steps.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \int_abs:n #1
   {
     \@@_value:w \exp_after:wN \@@_abs:N
@@ -1037,7 +1037,7 @@
   }
 \cs_new:Npn \@@_abs:N #1
   { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_set:Npn \int_max:nn #1#2
   {
     \@@_value:w \exp_after:wN \@@_maxmin:wwN
@@ -1046,7 +1046,7 @@
       >
     \exp_stop_f:
   }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_set:Npn \int_min:nn #1#2
   {
     \@@_value:w \exp_after:wN \@@_maxmin:wwN
@@ -1091,7 +1091,7 @@
 %   truncating behaviour that we want. The details are thanks to Heiko
 %   Oberdiek: getting things right in all cases is not so easy.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new:Npn \int_div_truncate:nn #1#2
   {
     \@@_value:w \@@_eval:w
@@ -1121,7 +1121,7 @@
 %    \end{macrocode}
 %   Finally there's the modulus operation.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new:Npn \int_mod:nn #1#2
   {
     \@@_value:w \@@_eval:w \exp_after:wN \@@_mod:ww
@@ -1274,10 +1274,10 @@
 % \UnitTested
 %    Adding and subtracting to and from a counter \ldots
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \int_add:Nn #1#2
   { \tex_advance:D #1 by \@@_eval:w #2 \@@_eval_end: }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \int_sub:Nn #1#2
   { \tex_advance:D #1 by - \@@_eval:w #2 \@@_eval_end: }
 \cs_new_protected:Npn \int_gadd:Nn
@@ -1331,7 +1331,7 @@
 %   if they are not defined. Thus there is no need for the checking
 %   code seen with token list variables.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \int_set:Nn #1#2
   { #1 ~ \@@_eval:w #2 \@@_eval_end: }
 \cs_new_protected:Npn \int_gset:Nn { \tex_global:D \int_set:Nn }
@@ -1536,7 +1536,7 @@
 % \UnitTested
 % More efficient but less natural in typing.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) \@@_eval_end: } {#2} { (#3) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) \@@_eval_end: } {#2} { (#3) } }
 \prg_new_conditional:Npnn \int_compare:nNn #1#2#3 { p , T , F , TF }
   {
     \if_int_compare:w \@@_eval:w #1 #2 \@@_eval:w #3 \@@_eval_end:
@@ -1595,7 +1595,7 @@
 % \UnitTested
 %   A predicate function.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) } }
 \prg_new_conditional:Npnn \int_if_odd:n #1 { p , T , F , TF}
   {
     \if_int_odd:w \@@_eval:w #1 \@@_eval_end:
@@ -1604,7 +1604,7 @@
       \prg_return_false:
     \fi:
   }
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) } }
 \prg_new_conditional:Npnn \int_if_even:n #1 { p , T , F , TF}
   {
     \if_int_odd:w \@@_eval:w #1 \@@_eval_end:
@@ -1720,7 +1720,7 @@
 %   step size of zero before checking the sign, but we optimize for the
 %   most frequent case (positive step).
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } { (#3) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } { (#3) } }
 \cs_new:Npn \int_step_function:nnnN #1#2#3
   {
     \exp_after:wN \@@_step:wwwN

Modified: trunk/l3kernel/l3keys.dtx
===================================================================
--- trunk/l3kernel/l3keys.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3keys.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1514,7 +1514,7 @@
 %   Setting the code for a key first logs if appropriate that we are
 %   defining a new key, then saves the code.
 %    \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   {
     \cs_if_exist:cF { \c_@@_code_root_tl #1 }
       { \__debug_log:x { Defining~key~#1~\msg_line_context: } }

Modified: trunk/l3kernel/l3msg.dtx
===================================================================
--- trunk/l3kernel/l3msg.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3msg.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -833,7 +833,7 @@
 %   This auxiliary is similar to \cs{__chk_if_free_cs:N}, and is used when
 %   defining messages with \cs{msg_new:nnnn}.
 %    \begin{macrocode}
-\__debug_patch:nnNw { }
+\__debug_patch:nnNNpn { }
   { \__debug_log:x { Defining~message~ #1 / #2 ~\msg_line_context: } }
 \cs_new_protected:Npn \__chk_if_free_msg:nn #1#2
   {
@@ -1952,8 +1952,6 @@
 %<*package>
 \bool_if:NTF \l at expl@enable at debug@bool
   {
-    \@@_kernel_new:nnn { kernel } { debug-unpatchable }
-      { Only~some~definitions~can~be~patched;~'#3'~cannot. }
     \@@_kernel_new:nnnn { check } { non-declared-variable }
       { The~variable~#1~has~not~been~declared~\msg_line_context:. }
       {

Modified: trunk/l3kernel/l3prg.dtx
===================================================================
--- trunk/l3kernel/l3prg.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3prg.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -811,16 +811,16 @@
 %   make sure the boolean exists.  This is needed because booleans are
 %   not based on token lists nor on \TeX{} registers.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \bool_set_true:N #1
   { \cs_set_eq:NN #1 \c_true_bool }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \bool_set_false:N #1
   { \cs_set_eq:NN #1 \c_false_bool }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \bool_gset_true:N #1
   { \cs_gset_eq:NN #1 \c_true_bool }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \bool_gset_false:N #1
   { \cs_gset_eq:NN #1 \c_false_bool }
 \cs_generate_variant:Nn \bool_set_true:N   { c }
@@ -855,10 +855,10 @@
 %   argument the meaning \cs{c_true_bool} or \cs{c_false_bool}.
 %   Again, we include some checking code.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \bool_set:Nn #1#2
   { \tex_chardef:D #1 = \bool_if_p:n {#2} }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \bool_gset:Nn #1#2
   { \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2} }
 \cs_generate_variant:Nn \bool_set:Nn  { c }
@@ -1384,7 +1384,7 @@
 %   pool. Also, it is considerably slower than what we use here so the
 %   few extra csnames are well spent I would say.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \prg_replicate:nn #1
   {
     \exp:w

Modified: trunk/l3kernel/l3skip.dtx
===================================================================
--- trunk/l3kernel/l3skip.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3skip.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1110,7 +1110,7 @@
 % \begin{macro}{\dim_gset:Nn, \dim_gset:cn}
 %   Setting dimensions is easy enough.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \dim_set:Nn #1#2
   { #1 ~ \@@_eval:w #2 \@@_eval_end: }
 \cs_new_protected:Npn \dim_gset:Nn { \tex_global:D \dim_set:Nn }
@@ -1141,13 +1141,13 @@
 % \begin{macro}{\dim_gsub:Nn, \dim_gsub:cn}
 %   Using |by| here deals with the (incorrect) case |\dimen123|.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \dim_add:Nn #1#2
   { \tex_advance:D #1 by \@@_eval:w #2 \@@_eval_end: }
 \cs_new_protected:Npn \dim_gadd:Nn { \tex_global:D \dim_add:Nn }
 \cs_generate_variant:Nn \dim_add:Nn  { c }
 \cs_generate_variant:Nn \dim_gadd:Nn { c }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \dim_sub:Nn #1#2
   { \tex_advance:D #1 by - \@@_eval:w #2 \@@_eval_end: }
 \cs_new_protected:Npn \dim_gsub:Nn { \tex_global:D \dim_sub:Nn }
@@ -1172,7 +1172,7 @@
 %   Functions for $\min$, $\max$, and absolute value with only one evaluation.
 %   The absolute value is evaluated by removing a leading~|-| if present.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \dim_abs:n #1
   {
     \exp_after:wN \@@_abs:N
@@ -1180,7 +1180,7 @@
   }
 \cs_new:Npn \@@_abs:N #1
   { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new:Npn \dim_max:nn #1#2
   {
     \dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
@@ -1189,7 +1189,7 @@
       >
     \@@_eval_end:
   }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new:Npn \dim_min:nn #1#2
   {
     \dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
@@ -1233,7 +1233,7 @@
 % \begin{macro}[pTF, EXP]{\dim_compare:nNn}
 %   Simple comparison.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) \@@_eval_end: } {#2} { (#3) } }
+\__debug_patch_conditional_args:nNNpnn { { (#1) \@@_eval_end: } {#2} { (#3) } }
 \prg_new_conditional:Npnn \dim_compare:nNn #1#2#3 { p , T , F , TF }
   {
     \if_dim:w \@@_eval:w #1 #2 \@@_eval:w #3 \@@_eval_end:
@@ -1433,7 +1433,7 @@
 % \begin{macro}{\dim_eval:n}
 %   Evaluating a dimension expression expandably.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \dim_eval:n #1
   { \dim_use:N \@@_eval:w #1 \@@_eval_end: }
 %    \end{macrocode}
@@ -1460,7 +1460,7 @@
 %   terminating early and leaving extra tokens lying around.  This is
 %   used a lot by low-level manipulations.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \dim_to_decimal:n #1
   {
     \exp_after:wN
@@ -1495,7 +1495,7 @@
 %   Another hard-coded conversion: this one is necessary to avoid things going
 %   off-scale.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \dim_to_decimal_in_sp:n #1
   { \int_eval:n { \@@_eval:w #1 \@@_eval_end: } }
 %    \end{macrocode}
@@ -1645,7 +1645,7 @@
 % \begin{macro}{\skip_gset:Nn, \skip_gset:cn}
 %   Much the same as for dimensions.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \skip_set:Nn #1#2
   { #1 ~ \etex_glueexpr:D #2 \scan_stop: }
 \cs_new_protected:Npn \skip_gset:Nn { \tex_global:D \skip_set:Nn }
@@ -1677,13 +1677,13 @@
 % \begin{macro}{\skip_gsub:Nn, \skip_gsub:cn}
 %   Using |by| here deals with the (incorrect) case |\skip123|.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \skip_add:Nn #1#2
   { \tex_advance:D #1 by \etex_glueexpr:D #2 \scan_stop: }
 \cs_new_protected:Npn \skip_gadd:Nn { \tex_global:D \skip_add:Nn }
 \cs_generate_variant:Nn \skip_add:Nn  { c }
 \cs_generate_variant:Nn \skip_gadd:Nn { c }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \skip_sub:Nn #1#2
   { \tex_advance:D #1 by - \etex_glueexpr:D #2 \scan_stop: }
 \cs_new_protected:Npn \skip_gsub:Nn { \tex_global:D \skip_sub:Nn }
@@ -1726,7 +1726,7 @@
 %    \begin{macrocode}
 \cs_set_protected:Npn \__cs_tmp:w #1
   {
-    \__debug_patch_args:nNw { { (##1) } }
+    \__debug_patch_conditional_args:nNNpnn { { (##1) } }
     \prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF }
       {
         \exp_after:wN \__skip_if_finite:wwNw
@@ -1745,7 +1745,7 @@
 % \begin{macro}{\skip_eval:n}
 %   Evaluating a skip expression expandably.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \skip_eval:n #1
   { \skip_use:N \etex_glueexpr:D #1 \scan_stop: }
 %    \end{macrocode}
@@ -1767,11 +1767,11 @@
 %    Inserting skips.
 %    \begin{macrocode}
 \cs_new_eq:NN  \skip_horizontal:N \tex_hskip:D
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \skip_horizontal:n #1
   { \skip_horizontal:N \etex_glueexpr:D #1 \scan_stop: }
 \cs_new_eq:NN  \skip_vertical:N \tex_vskip:D
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \skip_vertical:n #1
   { \skip_vertical:N \etex_glueexpr:D #1 \scan_stop: }
 \cs_generate_variant:Nn \skip_horizontal:N { c }
@@ -1909,7 +1909,7 @@
 % \begin{macro}{\muskip_gset:Nn, \muskip_gset:cn}
 %   This should be pretty familiar.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \muskip_set:Nn #1#2
   { #1 ~ \etex_muexpr:D #2 \scan_stop: }
 \cs_new_protected:Npn \muskip_gset:Nn { \tex_global:D \muskip_set:Nn }
@@ -1947,13 +1947,13 @@
 % \begin{macro}{\muskip_gsub:Nn, \muskip_gsub:cn}
 %   Using |by| here deals with the (incorrect) case |\muskip123|.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \muskip_add:Nn #1#2
   { \tex_advance:D #1 by \etex_muexpr:D #2 \scan_stop: }
 \cs_new_protected:Npn \muskip_gadd:Nn { \tex_global:D \muskip_add:Nn }
 \cs_generate_variant:Nn \muskip_add:Nn  { c }
 \cs_generate_variant:Nn \muskip_gadd:Nn { c }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new_protected:Npn \muskip_sub:Nn #1#2
   { \tex_advance:D #1 by - \etex_muexpr:D #2 \scan_stop: }
 \cs_new_protected:Npn \muskip_gsub:Nn { \tex_global:D \muskip_sub:Nn }
@@ -1970,7 +1970,7 @@
 % \begin{macro}{\muskip_eval:n}
 %   Evaluating a muskip expression expandably.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \muskip_eval:n #1
   { \muskip_use:N \etex_muexpr:D #1 \scan_stop: }
 %    \end{macrocode}

Modified: trunk/l3kernel/l3str.dtx
===================================================================
--- trunk/l3kernel/l3str.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3str.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1049,7 +1049,7 @@
   }
 \cs_new:Npn \str_item_ignore_spaces:nn #1
   { \exp_args:No \@@_item:nn { \tl_to_str:n {#1} } }
-\__debug_patch_args:nNw { {#1} { (#2) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } }
 \cs_new:Npn \@@_item:nn #1#2
   {
     \exp_after:wN \@@_item:w
@@ -1146,7 +1146,7 @@
   }
 \cs_new:Npn \str_range_ignore_spaces:nnn #1
   { \exp_args:No \@@_range:nnn { \tl_to_str:n {#1} } }
-\__debug_patch_args:nNw { {#1} { (#2) } { (#3) } }
+\__debug_patch_args:nNNpn { {#1} { (#2) } { (#3) } }
 \cs_new:Npn \@@_range:nnn #1#2#3
   {
     \exp_after:wN \@@_range:w

Modified: trunk/l3kernel/l3tl.dtx
===================================================================
--- trunk/l3kernel/l3tl.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3tl.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1186,7 +1186,7 @@
 %   three arguments must be checked: a token list |#2| or |#3| equal to
 %   \cs{scan_stop:} would lead to problems later on.
 %    \begin{macrocode}
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   {
     \__debug_chk_var_exist:N #1
     \__debug_chk_var_exist:N #2
@@ -1195,7 +1195,7 @@
   { }
 \cs_new_protected:Npn \tl_concat:NNN #1#2#3
   { \tl_set:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} } }
-\__debug_patch:nnNw
+\__debug_patch:nnNNpn
   {
     \__debug_chk_var_exist:N #1
     \__debug_chk_var_exist:N #2
@@ -1252,25 +1252,25 @@
 %   which makes the token list registers provided by \TeX{}
 %   more or less redundant. The \cs{tl_set:No} version is done
 %   \enquote{by hand} as it is used quite a lot.  Each definition is
-%   prefixed by a call to \cs{__debug_patch:nnNw} which adds an
+%   prefixed by a call to \cs{__debug_patch:nnNNpn} which adds an
 %   existence check to the definition.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_set:Nn #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_set:No #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_set:Nx #1#2
   { \cs_set_nopar:Npx #1 {#2} }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gset:Nn #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gset:No #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gset:Nx #1#2
   { \cs_gset_nopar:Npx #1 {#2} }
 \cs_generate_variant:Nn \tl_set:Nn  {         NV , Nv , Nf }
@@ -1295,28 +1295,28 @@
 %   }
 % Adding to the left is done directly to gain a little performance.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:Nn #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:NV #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:Nx #1#2
   { \cs_set_nopar:Npx #1 { #2 \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:Nn #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:NV #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:Nx #1#2
   { \cs_gset_nopar:Npx #1 { #2 \exp_not:o {#1} } }
 \cs_generate_variant:Nn \tl_put_left:Nn  { c }
@@ -1345,28 +1345,28 @@
 %   }
 % The same on the right.
 %    \begin{macrocode}
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:Nn #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:NV #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:Nx #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 #2 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:Nn #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:NV #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
-\__debug_patch:nnNw { \__debug_chk_var_exist:N #1 } { }
+\__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:Nx #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o {#1} #2 } }
 \cs_generate_variant:Nn \tl_put_right:Nn  { c }

Modified: trunk/l3kernel/l3token.dtx
===================================================================
--- trunk/l3kernel/l3token.dtx	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/l3token.dtx	2017-07-17 00:38:38 UTC (rev 7384)
@@ -1131,13 +1131,13 @@
 % \begin{macro}{\char_show_value_catcode:n}
 %   Simple wrappers around the primitives.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new_protected:Npn \char_set_catcode:nn #1#2
   {
     \tex_catcode:D \__int_eval:w #1 \__int_eval_end:
       = \__int_eval:w #2 \__int_eval_end:
   }
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \char_value_catcode:n #1
   { \tex_the:D \tex_catcode:D \__int_eval:w #1 \__int_eval_end: }
 \cs_new_protected:Npn \char_show_value_catcode:n #1
@@ -1271,46 +1271,46 @@
 % \begin{macro}{\char_show_value_sfcode:n}
 %   Pretty repetitive, but necessary!
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new_protected:Npn \char_set_mathcode:nn #1#2
   {
     \tex_mathcode:D \__int_eval:w #1 \__int_eval_end:
     = \__int_eval:w #2 \__int_eval_end:
   }
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \char_value_mathcode:n #1
   { \tex_the:D \tex_mathcode:D \__int_eval:w #1 \__int_eval_end: }
 \cs_new_protected:Npn \char_show_value_mathcode:n #1
   { \__msg_show_wrap:n { > ~ \char_value_mathcode:n {#1} } }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new_protected:Npn \char_set_lccode:nn #1#2
   {
     \tex_lccode:D \__int_eval:w #1 \__int_eval_end:
     = \__int_eval:w #2 \__int_eval_end:
   }
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \char_value_lccode:n #1
   { \tex_the:D \tex_lccode:D \__int_eval:w #1 \__int_eval_end: }
 \cs_new_protected:Npn \char_show_value_lccode:n #1
   { \__msg_show_wrap:n { > ~ \char_value_lccode:n {#1} } }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new_protected:Npn \char_set_uccode:nn #1#2
   {
     \tex_uccode:D \__int_eval:w #1 \__int_eval_end:
     = \__int_eval:w #2 \__int_eval_end:
   }
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \char_value_uccode:n #1
   { \tex_the:D \tex_uccode:D \__int_eval:w #1 \__int_eval_end: }
 \cs_new_protected:Npn \char_show_value_uccode:n #1
   { \__msg_show_wrap:n { > ~ \char_value_uccode:n {#1} } }
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new_protected:Npn \char_set_sfcode:nn #1#2
   {
     \tex_sfcode:D \__int_eval:w #1 \__int_eval_end:
     = \__int_eval:w #2 \__int_eval_end:
   }
-\__debug_patch_args:nNw { { (#1) } }
+\__debug_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \char_value_sfcode:n #1
   { \tex_the:D \tex_sfcode:D \__int_eval:w #1 \__int_eval_end: }
 \cs_new_protected:Npn \char_show_value_sfcode:n #1
@@ -1395,7 +1395,7 @@
 %   the interface layer, turn the two arguments into integers up-front so
 %   this is only done once.
 %    \begin{macrocode}
-\__debug_patch_args:nNw { { (#1) } { (#2) } }
+\__debug_patch_args:nNNpn { { (#1) } { (#2) } }
 \cs_new:Npn \char_generate:nn #1#2
   {
     \exp:w \exp_after:wN \@@_generate_aux:w

Modified: trunk/l3kernel/testfiles/m3expl001.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.luatex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.luatex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2800,7 +2800,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.ptex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.ptex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.uptex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.uptex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl001.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.xetex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl001.xetex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2798,7 +2798,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.luatex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.luatex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2800,7 +2800,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.ptex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.ptex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.uptex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.uptex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2788,7 +2788,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...

Modified: trunk/l3kernel/testfiles/m3expl003.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.xetex.tlg	2017-07-16 23:15:18 UTC (rev 7383)
+++ trunk/l3kernel/testfiles/m3expl003.xetex.tlg	2017-07-17 00:38:38 UTC (rev 7384)
@@ -2798,7 +2798,6 @@
 Defining message LaTeX/kernel/variable-not-defined on line ...
 Defining message LaTeX/kernel/variant-too-long on line ...
 Defining message LaTeX/kernel/invalid-variant on line ...
-Defining message LaTeX/kernel/debug-unpatchable on line ...
 Defining message LaTeX/check/non-declared-variable on line ...
 Defining message LaTeX/kernel/bad-variable on line ...
 Defining message LaTeX/kernel/misused-sequence on line ...



More information about the latex3-commits mailing list