[latex3-commits] [l3svn] branch master updated: New approach to validating l3keys

noreply at latex-project.org noreply at latex-project.org
Tue Sep 20 08:20:06 CEST 2016


This is an automated email from the git hooks/post-receive script.

joseph pushed a commit to branch master
in repository l3svn.

The following commit(s) were added to refs/heads/master by this push:
       new  f48208b   New approach to validating l3keys
f48208b is described below

commit f48208b4cdde787abac160cb6461f52481d093f2
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Tue Sep 20 07:19:22 2016 +0100

    New approach to validating l3keys
    
    Switching from a prop makes this much faster. There are other parts of the
    code that still need attention: the prop data will vanish in an upcoming
    commit.
---
 l3kernel/l3keys.dtx                     |  142 +++++++++++++++++--------------
 l3kernel/testfiles/m3expl001.luatex.tlg |   11 +--
 l3kernel/testfiles/m3expl001.ptex.tlg   |   11 +--
 l3kernel/testfiles/m3expl001.tlg        |   11 +--
 l3kernel/testfiles/m3expl001.uptex.tlg  |   11 +--
 l3kernel/testfiles/m3expl001.xetex.tlg  |   11 +--
 l3kernel/testfiles/m3expl003.luatex.tlg |   11 +--
 l3kernel/testfiles/m3expl003.ptex.tlg   |   11 +--
 l3kernel/testfiles/m3expl003.tlg        |   11 +--
 l3kernel/testfiles/m3expl003.uptex.tlg  |   11 +--
 l3kernel/testfiles/m3expl003.xetex.tlg  |   11 +--
 11 files changed, 140 insertions(+), 112 deletions(-)

diff --git a/l3kernel/l3keys.dtx b/l3kernel/l3keys.dtx
index 5fb19cc..ff6d5bc 100644
--- a/l3kernel/l3keys.dtx
+++ b/l3kernel/l3keys.dtx
@@ -1111,11 +1111,21 @@
 %<@@=keys>
 %    \end{macrocode}
 %
-% \begin{variable}{\c_@@_code_root_tl, \c_@@_info_root_tl}
-%   The prefixes for the code and variables of the keys themselves.
+% \begin{variable}
+%   {
+%     \c_@@_code_root_tl    ,
+%     \c_@@_default_root_tl ,
+%     \c_@@_groups_root_tl,
+%     \c_@@_info_root_tl    ,
+%     \c_@@_validate_root_tl
+%   }
+%   Various storage areas for the different data which make up keys.
 %    \begin{macrocode}
-\tl_const:Nn \c_@@_code_root_tl { key~code~>~ }
-\tl_const:Nn \c_@@_info_root_tl { key~info~>~ }
+\tl_const:Nn \c_@@_code_root_tl     { key~code~>~ }
+\tl_const:Nn \c_@@_default_root_tl  { key~default~>~ }
+\tl_const:Nn \c_@@_groups_root_tl   { key~groups~>~ }
+\tl_const:Nn \c_@@_info_root_tl     { key~info~>~ }
+\tl_const:Nn \c_@@_validate_root_tl { key~validate~>~ }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -1384,6 +1394,7 @@
       {
         \prop_set_eq:cN { \c_@@_info_root_tl #1 } \c_empty_prop
       }
+
     \cs_if_exist:cF { \c_@@_code_root_tl #1 }
       {
         \__chk_log:x { Defining~key~#1~ \msg_line_context: }
@@ -1624,38 +1635,76 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_undefine:
   {
-    \cs_set_eq:cN { \c_@@_code_root_tl \l_keys_path_tl } \tex_undefined:D
-    \cs_set_eq:cN { \c_@@_info_root_tl \l_keys_path_tl } \tex_undefined:D
+    \clist_map_inline:nn
+      { code , default , groups , info , validate }
+      {
+        \cs_set_eq:cN
+          { \tl_use:c { c_@@_ ##1 _root_tl } \l_keys_path_tl }
+          \tex_undefined:D
+      }
   }
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}[int]{\@@_value_requirement:nn}
-%   Values can be required or forbidden by having the appropriate marker
-%   set. First, both the required and forbidden ones are clear, just in case!
+% \begin{macro}[aux]{\@@_validate_forbidden:, \@@_validate_required:}
+% \begin{macro}[aux]{\@@_validate_cleanup:w}
+%   Validating key input is done using a second function which runs before
+%   the main key code. Setting that up means setting it equal to a generic
+%   stub which does the check. This approach makes the lookup very fast at
+%   the cost of one additional csname per key that needs it. The cleanup here
+%   has to know the structure of the following code.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_value_requirement:nn #1#2
   {
-    \@@_ensure_exist:V \l_keys_path_tl
-    \prop_remove:cn { \c_@@_info_root_tl \l_keys_path_tl }
-      { required }
-    \prop_remove:cn { \c_@@_info_root_tl \l_keys_path_tl }
-      { forbidden }
-    \str_if_eq:nnTF {#2} { true }
+    \str_case:nnF {#2}
       {
-        \prop_put:cnn { \c_@@_info_root_tl \l_keys_path_tl }
-          {#1} { true }
-      }
-      {
-        \str_if_eq:nnF {#2} { false }
+        { true }
+          {
+            \cs_set_eq:cc
+              { \c_@@_validate_root_tl \l_keys_path_tl }
+              { @@_validate_ #1 : }
+          }
+        { false }
           {
-            \__msg_kernel_error:nnx { kernel } { property-boolean-values-only }
-              { .value_ #1 :n }
+            \cs_if_eq:ccT
+              { \c_@@_validate_root_tl \l_keys_path_tl }
+              { @@_validate_ #1 : }
+              {
+                \cs_set_eq:cN
+                  { \c_@@_validate_root_tl \l_keys_path_tl }
+                  \tex_undefined:D
+              }
           }
       }
+      {
+        \__msg_kernel_error:nnx { kernel } { property-boolean-values-only }
+          { .value_ #1 :n }
+      }
+  }
+\cs_new_protected:Npn \@@_validate_forbidden:
+  {
+    \bool_if:NF \l_@@_no_value_bool
+      {
+        \__msg_kernel_error:nnxx { kernel } { value-forbidden }
+          { \l_keys_path_tl } { \l_keys_value_tl }
+        \@@_validate_cleanup:w
+      }
+  }
+\cs_new_protected:Npn \@@_validate_required:
+  {
+    \bool_if:NT \l_@@_no_value_bool
+      {
+        \__msg_kernel_error:nnx { kernel } { value-required }
+          { \l_keys_path_tl }
+        \@@_validate_cleanup:w
+      }
   }
+\cs_new_protected:Npn \@@_validate_cleanup:w #1 \cs_end: #2#3 { }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \begin{macro}[int]{\@@_variable_set:NnnN, \@@_variable_set:cnnN}
 %   Setting a variable takes the type and scope separately so that
@@ -2124,27 +2173,13 @@
   }
 \cs_new_protected:Npn \@@_set_aux:
   {
-    \bool_if:nTF
-      {
-        \@@_if_value_p:n { required } &&
-        \l_@@_no_value_bool
-      }
-      {
-        \__msg_kernel_error:nnx { kernel } { value-required }
-          { \l_keys_path_tl }
-      }
+    \cs_if_exist:cTF { \c_@@_code_root_tl \l_keys_path_tl }
       {
-        \bool_if:nTF
-          {
-              \@@_if_value_p:n { forbidden } &&
-            ! \l_@@_no_value_bool
-          }
-          {
-            \__msg_kernel_error:nnxx { kernel } { value-forbidden }
-              { \l_keys_path_tl } { \l_keys_value_tl }
-          }
-          { \@@_execute: }
+        \cs_if_exist_use:c { \c_@@_validate_root_tl \l_keys_path_tl }
+        \cs:w \c_@@_code_root_tl \l_keys_path_tl \exp_after:wN \cs_end:
+          \exp_after:wN { \l_keys_value_tl }
       }
+      { \@@_execute_unknown: }
   }
 %    \end{macrocode}
 %  If selective setting is active, there are a number of possible sub-cases
@@ -2226,24 +2261,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}[int]{\@@_if_value_p:n}
-%   To test if a value is required or forbidden. A simple check for
-%   the existence of the appropriate marker.
-%    \begin{macrocode}
-\prg_new_conditional:Npnn \@@_if_value:n #1 { p , T, TF, F }
-  {
-    \prop_if_exist:cTF { \c_@@_info_root_tl \l_keys_path_tl }
-      {
-        \prop_if_in:cnTF { \c_@@_info_root_tl \l_keys_path_tl } {#1}
-          { \prg_return_true: }
-          { \prg_return_false: }
-      }
-      { \prg_return_false: }
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[int]{\@@_execute:}
 % \begin{macro}[aux]{\@@_execute_unknown:}
 % \begin{macro}[aux, EXP]{\@@_execute:nn}
 % \begin{macro}[aux]{\@@_store_unused:}
@@ -2253,14 +2270,16 @@
 %   is unknown depends on whether unknown keys are being skipped or if
 %   an error should be raised.
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_execute:
-  { \@@_execute:nn { \l_keys_path_tl } { \@@_execute_unknown: } }
 \cs_new_protected:Npn \@@_execute_unknown:
   {
     \bool_if:NTF \l_@@_only_known_bool
       { \@@_store_unused: }
       {
-        \@@_execute:nn { \l_@@_module_tl / unknown }
+        \cs_if_exist:cTF { \c_@@_code_root_tl \l_@@_module_tl / unknown }
+          {
+            \cs:w \c_@@_code_root_tl \l_@@_module_tl / unknown \exp_after:wN
+              \cs_end: \exp_after:wN { \l_keys_value_tl }
+          }
           {
             \__msg_kernel_error:nnxx { kernel } { key-unknown }
               { \l_keys_path_tl } { \l_@@_module_tl }
@@ -2289,7 +2308,6 @@
 % \end{macro}
 % \end{macro}
 % \end{macro}
-% \end{macro}
 %
 % \begin{macro}[int, EXP]{\@@_choice_find:n}
 % \begin{macro}[int, EXP]{\@@_multichoice_find:n}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 9e1be7c..59aac2a 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -3129,7 +3129,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count123
@@ -3187,6 +3190,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3291,11 +3297,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 8ee0c0d..84a1794 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -3120,7 +3120,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count124
@@ -3178,6 +3181,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3282,11 +3288,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 86a9270..cd977eb 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -3120,7 +3120,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count123
@@ -3178,6 +3181,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3282,11 +3288,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index d55188b..ba39b5c 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -3120,7 +3120,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count124
@@ -3178,6 +3181,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3282,11 +3288,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 3eb9cc9..53b051e 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -3127,7 +3127,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count123
@@ -3185,6 +3188,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3289,11 +3295,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 7e3cbe9..6f5561f 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -3130,7 +3130,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count123
@@ -3188,6 +3191,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3292,11 +3298,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index b8677e0..cc83ed4 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -3121,7 +3121,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count124
@@ -3179,6 +3182,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3283,11 +3289,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 706d02b..e063a7e 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -3121,7 +3121,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count123
@@ -3179,6 +3182,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3283,11 +3289,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 1807911..f601af8 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -3121,7 +3121,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count124
@@ -3179,6 +3182,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3283,11 +3289,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index c9276e0..82a05f4 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -3128,7 +3128,10 @@ Defining \__keyval_def_aux:n on line ...
 Defining \__keyval_def_aux:w on line ...
 Defining message LaTeX/kernel/misplaced-equals-sign on line ...
 Defining \c__keys_code_root_tl on line ...
+Defining \c__keys_default_root_tl on line ...
+Defining \c__keys_groups_root_tl on line ...
 Defining \c__keys_info_root_tl on line ...
+Defining \c__keys_validate_root_tl on line ...
 Defining \c__keys_props_root_tl on line ...
 Defining \l_keys_choice_int on line ...
 \l_keys_choice_int=\count123
@@ -3186,6 +3189,9 @@ Defining \__keys_meta_make:n on line ...
 Defining \__keys_meta_make:nn on line ...
 Defining \__keys_undefine: on line ...
 Defining \__keys_value_requirement:nn on line ...
+Defining \__keys_validate_forbidden: on line ...
+Defining \__keys_validate_required: on line ...
+Defining \__keys_validate_cleanup:w on line ...
 Defining \__keys_variable_set:NnnN on line ...
 Defining \__keys_variable_set:cnnN on line ...
 Defining \key prop > .bool_set:N on line ...
@@ -3290,11 +3296,6 @@ Defining \__keys_set_aux: on line ...
 Defining \__keys_set_selective: on line ...
 Defining \__keys_check_groups: on line ...
 Defining \__keys_value_or_default:n on line ...
-Defining \__keys_if_value_p:n on line ...
-Defining \__keys_if_value:nT on line ...
-Defining \__keys_if_value:nTF on line ...
-Defining \__keys_if_value:nF on line ...
-Defining \__keys_execute: on line ...
 Defining \__keys_execute_unknown: on line ...
 Defining \__keys_execute:nn on line ...
 Defining \__keys_store_unused: on line ...

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the latex3-commits mailing list