[latex3-commits] [l3svn] 07/07: (u)pTeX has added some more boxes

noreply at latex-project.org noreply at latex-project.org
Tue Jun 7 22:48:53 CEST 2016


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

joseph pushed a commit to branch master
in repository l3svn.

commit dfa3a671cadd437357aae907aa44922204603723
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Tue Jun 7 21:28:35 2016 +0100

    (u)pTeX has added some more boxes
---
 .../xcoffins/testfiles/xcoffins003.ptex.tlg        |    8 +
 .../xcoffins/testfiles/xcoffins003.uptex.tlg       |    8 +
 l3packages/xparse/testfiles/xparse001.ptex.tlg     | 1239 ++++++++++++++++++++
 l3packages/xparse/testfiles/xparse001.uptex.tlg    | 1239 ++++++++++++++++++++
 4 files changed, 2494 insertions(+)

diff --git a/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg b/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg
index be8e07a..becab47 100644
--- a/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg
+++ b/l3experimental/xcoffins/testfiles/xcoffins003.ptex.tlg
@@ -6,6 +6,7 @@ TEST 1: Test 1: rotation
 ============================================================
 > \box72=
 \hbox(50.5+45.5)x62.2222
+.\hbox(0.0+0.0)x0.0
 .\hbox(50.5+45.5)x62.2222
 ..\mathon
 ..\vbox(50.5+45.5)x62.2222
@@ -160,6 +161,7 @@ TEST 1: Test 1: rotation
 ....\glue(\tabskip) 0.0
 ...\rule(0.0+0.0)x62.2222
 ..\mathoff
+.\hbox(0.0+0.0)x0.0
 ! OK.
 <argument> \showbox \aaa 
                          x\fbox {\usebox \aaa }\RotateCoffin \aaa {45}\showb...
@@ -176,6 +178,7 @@ l. ...}
 .....\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
 .....\hbox(50.5+45.5)x0.0
 ......\hbox(50.5+45.5)x62.2222
+.......\hbox(0.0+0.0)x0.0
 .......\hbox(50.5+45.5)x62.2222
 ........\mathon
 ........\vbox(50.5+45.5)x62.2222
@@ -330,6 +333,7 @@ l. ...}
 ..........\glue(\tabskip) 0.0
 .........\rule(0.0+0.0)x62.2222
 ........\mathoff
+.......\hbox(0.0+0.0)x0.0
 .....\special{pdf:literal Q}
 ! OK.
 <argument> ...RotateCoffin \aaa {45}\showbox \aaa 
@@ -357,6 +361,7 @@ l. ...}
 ...........\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
 ...........\hbox(50.5+45.5)x0.0
 ............\hbox(50.5+45.5)x62.2222
+.............\hbox(0.0+0.0)x0.0
 .............\hbox(50.5+45.5)x62.2222
 ..............\mathon
 ..............\vbox(50.5+45.5)x62.2222
@@ -511,6 +516,7 @@ l. ...}
 ................\glue(\tabskip) 0.0
 ...............\rule(0.0+0.0)x62.2222
 ..............\mathoff
+.............\hbox(0.0+0.0)x0.0
 ...........\special{pdf:literal Q}
 .....\special{pdf:literal Q}
 ! OK.
@@ -556,6 +562,7 @@ TEST 2: Test 2: rotation+alignment
 ....................\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
 ....................\hbox(50.5+45.5)x0.0
 .....................\hbox(50.5+45.5)x62.2222
+......................\hbox(0.0+0.0)x0.0
 ......................\hbox(50.5+45.5)x62.2222
 .......................\mathon
 .......................\vbox(50.5+45.5)x62.2222
@@ -710,6 +717,7 @@ TEST 2: Test 2: rotation+alignment
 .........................\glue(\tabskip) 0.0
 ........................\rule(0.0+0.0)x62.2222
 .......................\mathoff
+......................\hbox(0.0+0.0)x0.0
 ....................\special{pdf:literal Q}
 ..............\special{pdf:literal Q}
 ........\special{pdf:literal Q}
diff --git a/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg b/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg
index be8e07a..becab47 100644
--- a/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg
+++ b/l3experimental/xcoffins/testfiles/xcoffins003.uptex.tlg
@@ -6,6 +6,7 @@ TEST 1: Test 1: rotation
 ============================================================
 > \box72=
 \hbox(50.5+45.5)x62.2222
+.\hbox(0.0+0.0)x0.0
 .\hbox(50.5+45.5)x62.2222
 ..\mathon
 ..\vbox(50.5+45.5)x62.2222
@@ -160,6 +161,7 @@ TEST 1: Test 1: rotation
 ....\glue(\tabskip) 0.0
 ...\rule(0.0+0.0)x62.2222
 ..\mathoff
+.\hbox(0.0+0.0)x0.0
 ! OK.
 <argument> \showbox \aaa 
                          x\fbox {\usebox \aaa }\RotateCoffin \aaa {45}\showb...
@@ -176,6 +178,7 @@ l. ...}
 .....\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
 .....\hbox(50.5+45.5)x0.0
 ......\hbox(50.5+45.5)x62.2222
+.......\hbox(0.0+0.0)x0.0
 .......\hbox(50.5+45.5)x62.2222
 ........\mathon
 ........\vbox(50.5+45.5)x62.2222
@@ -330,6 +333,7 @@ l. ...}
 ..........\glue(\tabskip) 0.0
 .........\rule(0.0+0.0)x62.2222
 ........\mathoff
+.......\hbox(0.0+0.0)x0.0
 .....\special{pdf:literal Q}
 ! OK.
 <argument> ...RotateCoffin \aaa {45}\showbox \aaa 
@@ -357,6 +361,7 @@ l. ...}
 ...........\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
 ...........\hbox(50.5+45.5)x0.0
 ............\hbox(50.5+45.5)x62.2222
+.............\hbox(0.0+0.0)x0.0
 .............\hbox(50.5+45.5)x62.2222
 ..............\mathon
 ..............\vbox(50.5+45.5)x62.2222
@@ -511,6 +516,7 @@ l. ...}
 ................\glue(\tabskip) 0.0
 ...............\rule(0.0+0.0)x62.2222
 ..............\mathoff
+.............\hbox(0.0+0.0)x0.0
 ...........\special{pdf:literal Q}
 .....\special{pdf:literal Q}
 ! OK.
@@ -556,6 +562,7 @@ TEST 2: Test 2: rotation+alignment
 ....................\special{pdf:literal 0.70711 0.70711 -0.70711 0.70711 0 0 cm}
 ....................\hbox(50.5+45.5)x0.0
 .....................\hbox(50.5+45.5)x62.2222
+......................\hbox(0.0+0.0)x0.0
 ......................\hbox(50.5+45.5)x62.2222
 .......................\mathon
 .......................\vbox(50.5+45.5)x62.2222
@@ -710,6 +717,7 @@ TEST 2: Test 2: rotation+alignment
 .........................\glue(\tabskip) 0.0
 ........................\rule(0.0+0.0)x62.2222
 .......................\mathoff
+......................\hbox(0.0+0.0)x0.0
 ....................\special{pdf:literal Q}
 ..............\special{pdf:literal Q}
 ........\special{pdf:literal Q}
diff --git a/l3packages/xparse/testfiles/xparse001.ptex.tlg b/l3packages/xparse/testfiles/xparse001.ptex.tlg
new file mode 100644
index 0000000..c4697b7
--- /dev/null
+++ b/l3packages/xparse/testfiles/xparse001.ptex.tlg
@@ -0,0 +1,1239 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Joseph Wright, Frank Mittelbach, Bruno Le Floch
+============================================================
+TEST 1: Checking for existing definitions
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-already-defined"
+! 
+! Command '\foo' already defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentCommand with a command that already has a
+| definition.
+| The existing definition of '\foo' will not be altered.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-not-yet-defined"
+! 
+! Command '\foo' not yet defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentCommand with a command that was never defined.
+| A new command '\foo' will be created.
+|...............................................
+> \foo=\protected macro:->First definition.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 2: Commands with simple mandatory arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=\protected macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm' on line ....
+.................................................
+> \foo=\protected macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmmm' on line ....
+.................................................
+> \foo=\protected
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 3: Command with too many arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'mmmmmmmmmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/bad-number-of-arguments"
+! 
+! Function '\foo' cannot be defined with 10 arguments.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| LaTeX has been asked to define a function '\foo' with 10 arguments. TeX
+| allows between 0 and 9 arguments for a single function.
+|...............................................
+> \foo=undefined.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 4: Commands with one long mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_2:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_3:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_4:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_5:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_6:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_7:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_8:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 5: Commands with one processed mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. '>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_process_arg:n {\foo }\__xparse_grab_m:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_2:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_3:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_4:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_5:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_6:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_7:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_8:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 6: Arguments read up to first brace
+============================================================
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 7: Various mandatory combinations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'lm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_l:w \__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mlm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_l:w \__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_u:w {end}\__xparse_grab_u:w {stop!}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'lll' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_l:w \__xparse_grab_l:w \__xparse_grab_l:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+l>{\foo }u{end}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_l_long:w \__xparse_process_arg:n {\foo }\__xparse_grab_u:w
+{end}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 8: Optional argument creation
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'som' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_t:w *\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 't+d()+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_t:w +\__xparse_grab_D:w (){-NoValue-}\__xparse_grab_m_long:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+t\par O{default}mmm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_t_long:w \par \__xparse_grab_D:w
+[]{default}\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'momo' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mgom' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {-NoValue-}\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mG{test}sm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {test}\__xparse_grab_t:w
+*\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 9: Unknown argument types
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'mmn' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'n' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'n' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'abc' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'a' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'a' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'b' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'b' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'c' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'c' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 10: Some valid expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\long macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'om' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+o+m' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'sm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_t:w \foo (arg 1)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'osm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_t:w \foo (arg 2)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 11: Not valid as expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'mo' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+! 
+! Argument specification for expandable command ends with optional argument.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_m:w \__xparse_expandable_grab_D:w
+\foo (arg 2) []{-NoValue-}\__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+mmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+! 
+! Inconsistent long arguments for expandable command.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+! 
+! Inconsistent long arguments for expandable command.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'o+m' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+! 
+! Inconsistent long arguments for expandable command.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'r()o' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+! 
+! Argument specification for expandable command ends with optional argument.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_R:w \foo (arg 1)
+(){-NoValue-}\__xparse_expandable_grab_D:w \foo (arg 2)
+[]{-NoValue-}\__xparse_grab_expandable_end:wN \foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 12: Checking for existing environments
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-already-defined"
+! 
+! Environment 'foo' already defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentEnvironment with an environment that already has a
+| definition.
+| The existing definition of 'foo' will be overwritten.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-not-yet-defined"
+! 
+! Environment 'foo' not yet defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentEnvironment with an environment that was never
+| defined.
+| A new environment 'foo' will be created.
+|...............................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:->\cs_set_nopar:Npx \environment
+foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }First.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 13: Valid environment declarations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-environment"
+. 
+. Defining environment 'foo' with sig. 'mmm' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'som' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'so+m' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'u{stop}om' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_u:w
+{stop}\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl
+.
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'moo' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\__xparse_grab_D_trailing:w
+[]{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 14: Environment groups: should show "outside" and 1
+============================================================
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 15: Passing args to end of environments: display correct args
+============================================================
+> (A).
+<recently read> }
+l. ...}
+> (A)(B).
+<recently read> }
+l. ...}
+> (A)(B)(C).
+<recently read> }
+l. ...}
+> (A)(-NoValue-)(-NoValue-).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 16: Nested environments
+============================================================
+> \@currenvir=foo.
+<recently read> }
+l. ...}
+> \@currenvir=document.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 17: Passing arguments to the end with more complex cases
+============================================================
+> \box57=
+\hbox(6.94444+1.94444)x142.50034
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+! OK.
+<argument> \l_tmpa_box 
+l. ...  }
+============================================================
+============================================================
+TEST 18: Expansion at end of environment
+============================================================
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <7> on input line ....
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <5> on input line ....
+> \box57=
+\hbox(8.5+3.5)x58.44452
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+! OK.
+<argument> \l_tmpa_box 
+l. ...  }
+============================================================
diff --git a/l3packages/xparse/testfiles/xparse001.uptex.tlg b/l3packages/xparse/testfiles/xparse001.uptex.tlg
new file mode 100644
index 0000000..c4697b7
--- /dev/null
+++ b/l3packages/xparse/testfiles/xparse001.uptex.tlg
@@ -0,0 +1,1239 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Joseph Wright, Frank Mittelbach, Bruno Le Floch
+============================================================
+TEST 1: Checking for existing definitions
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-already-defined"
+! 
+! Command '\foo' already defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentCommand with a command that already has a
+| definition.
+| The existing definition of '\foo' will not be altered.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/command-not-yet-defined"
+! 
+! Command '\foo' not yet defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentCommand with a command that was never defined.
+| A new command '\foo' will be created.
+|...............................................
+> \foo=\protected macro:->First definition.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 2: Commands with simple mandatory arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=\protected macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm' on line ....
+.................................................
+> \foo=\protected macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmm' on line ....
+.................................................
+> \foo=\protected macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmmm' on line ....
+.................................................
+> \foo=\protected
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 3: Command with too many arguments
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'mmmmmmmmmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/bad-number-of-arguments"
+! 
+! Function '\foo' cannot be defined with 10 arguments.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| LaTeX has been asked to define a function '\foo' with 10 arguments. TeX
+| allows between 0 and 9 arguments for a single function.
+|...............................................
+> \foo=undefined.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 4: Commands with one long mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_2:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_3:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_4:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_5:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_6:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_7:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmm+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_8:w \__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 5: Commands with one processed mandatory argument
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. '>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_process_arg:n {\foo }\__xparse_grab_m:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_2:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_3:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_4:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_5:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_6:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7->(#1)(#2)(#3)(#4)(#5)(#6)(#7).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_7:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmmmmmmm>{\foo }m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_8:w \__xparse_process_arg:n {\foo }\__xparse_grab_m:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long
+macro:#1#2#3#4#5#6#7#8#9->(#1)(#2)(#3)(#4)(#5)(#6)(#7)(#8)(#9).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 6: Arguments read up to first brace
+============================================================
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+> \l_test_tl=(\bar )(1).
+<recently read> }
+l. ...}
+> \l_test_tl=(100)(2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 7: Various mandatory combinations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'lm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_l:w \__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mlm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_l:w \__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_u:w {end}\__xparse_grab_u:w {stop!}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'lll' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_l:w \__xparse_grab_l:w \__xparse_grab_l:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+l>{\foo }u{end}' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_l_long:w \__xparse_process_arg:n {\foo }\__xparse_grab_u:w
+{end}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 8: Optional argument creation
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'som' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_t:w *\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 't+d()+m' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_t:w +\__xparse_grab_D:w (){-NoValue-}\__xparse_grab_m_long:w
+\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+t\par O{default}mmm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_t_long:w \par \__xparse_grab_D:w
+[]{default}\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'momo' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mgom' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {-NoValue-}\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mG{test}sm' on line ....
+.................................................
+> \foo=\protected macro:->\int_zero:N \l__xparse_processor_int \tl_set:Nn
+\l__xparse_args_tl {\foo code }\tl_set:Nn \l__xparse_fn_tl {\foo 
+}\__xparse_grab_m_1:w \__xparse_grab_G:w {test}\__xparse_grab_t:w
+*\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 9: Unknown argument types
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'mmn' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'n' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'n' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'abc' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'a' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'a' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'b' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'b' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/unknown-argument-type"
+! 
+! Unknown argument type 'c' replaced by 'm'.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The letter 'c' does not specify a known argument type. LaTeX will assume you
+| want a standard mandatory argument (type 'm').
+|...............................................
+> \foo=\protected macro:#1#2#3->.
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 10: Some valid expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'm' on line ....
+.................................................
+> \foo=macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+m' on line ....
+.................................................
+> \foo=\long macro:#1->(#1).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mmm' on line ....
+.................................................
+> \foo=macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=undefined.
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'om' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+o+m' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'sm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_t:w \foo (arg 1)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'osm' on line ....
+.................................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_t:w \foo (arg 2)
+*\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 11: Not valid as expandable functions
+============================================================
+.................................................
+. LaTeX info: "xparse/define-command"
+. 
+. Defining command \foo with sig. 'mo' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+! 
+! Argument specification for expandable command ends with optional argument.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_m:w \__xparse_expandable_grab_D:w
+\foo (arg 2) []{-NoValue-}\__xparse_grab_expandable_end:wN \foo code
+\q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. '+mmm' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+! 
+! Inconsistent long arguments for expandable command.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+! 
+! Inconsistent long arguments for expandable command.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=\long macro:#1#2#3->(#1)(#2)(#3).
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'o+m' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/inconsistent-long"
+! 
+! Inconsistent long arguments for expandable command.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| The arguments for an expandable command must either all be short or all be
+| long. You have tried to mix the two types.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_D:w \foo (arg 1)
+[]{-NoValue-}\__xparse_expandable_grab_m:w \__xparse_grab_expandable_end:wN
+\foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'r()o' on line ....
+.................................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/expandable-ending-optional"
+! 
+! Argument specification for expandable command ends with optional argument.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| Expandable commands must have a final mandatory argument (or no arguments at
+| all). You cannot have a terminal optional argument with expandable commands.
+|...............................................
+> \foo=macro:->\__xparse_expandable_grab_R:w \foo (arg 1)
+(){-NoValue-}\__xparse_expandable_grab_D:w \foo (arg 2)
+[]{-NoValue-}\__xparse_grab_expandable_end:wN \foo code \q__xparse \foo  .
+<recently read> }
+l. ...}
+> \foo code=\long macro:#1#2->(#1)(#2).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 12: Checking for existing environments
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-already-defined"
+! 
+! Environment 'foo' already defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \NewDocumentEnvironment with an environment that already has a
+| definition.
+| The existing definition of 'foo' will be overwritten.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "xparse/environment-not-yet-defined"
+! 
+! Environment 'foo' not yet defined!
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...}
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| You have used \RenewDocumentEnvironment with an environment that was never
+| defined.
+| A new environment 'foo' will be created.
+|...............................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:->\cs_set_nopar:Npx \environment
+foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }First.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 13: Valid environment declarations
+============================================================
+.................................................
+. LaTeX info: "xparse/define-environment"
+. 
+. Defining environment 'foo' with sig. 'mmm' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_m_3:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'som' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'so+m' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_t:w *\__xparse_grab_D:w
+[]{-NoValue-}\__xparse_grab_m_long:w \l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'u{stop}om' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_u:w
+{stop}\__xparse_grab_D:w []{-NoValue-}\__xparse_grab_m_1:w \l__xparse_args_tl
+.
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+.................................................
+. LaTeX info: "xparse/redefine-environment"
+. 
+. Redefining environment 'foo' with sig. 'moo' on line ....
+.................................................
+> \environment foo=\protected macro:->\int_zero:N \l__xparse_processor_int
+\tl_set:Nn \l__xparse_args_tl {\environment foo code }\tl_set:Nn
+\l__xparse_fn_tl {\environment foo  }\__xparse_grab_m_1:w
+\__xparse_grab_D_trailing:w []{-NoValue-}\__xparse_grab_D_trailing:w
+[]{-NoValue-}\l__xparse_args_tl .
+<recently read> }
+l. ...}
+> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
+\environment foo end aux {\exp_not:N \environment foo end aux  \tl_tail:N
+\l__xparse_args_tl }(#1)(#2)(#3).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 14: Environment groups: should show "outside" and 1
+============================================================
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+> \l_test_tl=outside.
+<recently read> }
+l. ...}
+> \currentgrouplevel=1.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 15: Passing args to end of environments: display correct args
+============================================================
+> (A).
+<recently read> }
+l. ...}
+> (A)(B).
+<recently read> }
+l. ...}
+> (A)(B)(C).
+<recently read> }
+l. ...}
+> (A)(-NoValue-)(-NoValue-).
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 16: Nested environments
+============================================================
+> \@currenvir=foo.
+<recently read> }
+l. ...}
+> \@currenvir=document.
+<recently read> }
+l. ...}
+============================================================
+============================================================
+TEST 17: Passing arguments to the end with more complex cases
+============================================================
+> \box57=
+\hbox(6.94444+1.94444)x142.50034
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 a
+.\OT1/cmr/m/n/10 r
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 m
+.\OT1/cmr/m/n/10 i
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 d
+.\OT1/cmr/m/n/10 l
+.\OT1/cmr/m/n/10 e
+.\OT1/cmr/m/n/10 s
+.\OT1/cmr/m/n/10 t
+.\OT1/cmr/m/n/10 o
+.\OT1/cmr/m/n/10 p
+.\OT1/cmr/m/n/10 !
+! OK.
+<argument> \l_tmpa_box 
+l. ...  }
+============================================================
+============================================================
+TEST 18: Expansion at end of environment
+============================================================
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <7> on input line ....
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <5> on input line ....
+> \box57=
+\hbox(8.5+3.5)x58.44452
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+.\hbox(0.0+0.0)x0.0
+.\hbox(8.5+3.5)x29.22226
+..\mathon
+..\vbox(8.5+3.5)x29.22226
+...\rule(0.0+0.0)x29.22226
+...\hbox(8.39996+3.60004)x29.22226
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x18.66667
+.....\rule(8.39996+3.60004)x0.0
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 T
+.....\kern-0.83334
+.....\OT1/cmr/m/n/10 e
+.....\OT1/cmr/m/n/10 s
+.....\OT1/cmr/m/n/10 t
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.00002
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 a
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+....\hbox(8.39996+3.60004)x5.55557
+.....\glue 0.0
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 b
+.....\glue 0.0 plus 1.0fil
+.....\glue 0.0
+....\glue(\tabskip) 0.0
+...\rule(0.0+0.0)x29.22226
+..\mathoff
+.\hbox(0.0+0.0)x0.0
+! OK.
+<argument> \l_tmpa_box 
+l. ...  }
+============================================================

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


More information about the latex3-commits mailing list