[latex3-commits] [l3svn] r6990 - Make mandatory argument of -NoValue- remain -NoValue- (fixes #349)
noreply at latex-project.org
noreply at latex-project.org
Mon Mar 13 02:19:18 CET 2017
Author: bruno
Date: 2017-03-13 02:19:18 +0100 (Mon, 13 Mar 2017)
New Revision: 6990
Modified:
trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg
trunk/l3packages/xparse/testfiles/xparse001.tlg
trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg
trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg
trunk/l3packages/xparse/testfiles/xparse004.lvt
trunk/l3packages/xparse/testfiles/xparse004.tlg
trunk/l3packages/xparse/xparse.dtx
Log:
Make mandatory argument of -NoValue- remain -NoValue- (fixes #349)
Previously that became an empty argument (if the command had any
default arguments) because the machinery for default arguments replaces
-NoValue- by the corresponding default indiscriminately. I simply put
a default value of -NoValue- for mandatory arguments.
As a side-effect, I've optimized the code so that a function such that
all default values are -NoValue- does not use the machinery at all.
Modified: trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg 2017-03-13 01:19:18 UTC (rev 6990)
@@ -549,8 +549,7 @@
. Defining command \foo with sig. 'som' on line ....
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {som}\foo \foo code
-{\__xparse_grab_t:w *\__xparse_grab_D:w []\__xparse_grab_m_1:w
-}{.{.-NoValue-}.}{}.
+{\__xparse_grab_t:w *\__xparse_grab_D:w []\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -562,8 +561,7 @@
. Redefining command \foo with sig. 't+d()+m' on line ....
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {t+d()+m}\foo \foo code
-{\__xparse_grab_t:w +\__xparse_grab_D:w ()\__xparse_grab_m_long:w
-}{.{.-NoValue-}.}{}.
+{\__xparse_grab_t:w +\__xparse_grab_D:w ()\__xparse_grab_m_long:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -576,7 +574,9 @@
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {+t\par O{default}mmm}\foo
\foo code {\__xparse_grab_t_long:w \par \__xparse_grab_D:w
-[]\__xparse_grab_m_3:w }{.{.default}...}{}.
+[]\__xparse_grab_m_3:w }{\c__xparse_no_value_tl {\prg_do_nothing:
+default}\c__xparse_no_value_tl \c__xparse_no_value_tl \c__xparse_no_value_tl
+}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
@@ -589,7 +589,7 @@
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {momo}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_D:w []\__xparse_grab_m_1:w
-\__xparse_grab_D_trailing:w []}{.{.-NoValue-}.{.-NoValue-}}{}.
+\__xparse_grab_D_trailing:w []}{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -609,7 +609,7 @@
*************************************************
> \foo=\protected macro:->\__xparse_start:nNNnnn {mgom}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_G:w \__xparse_grab_D:w
-[]\__xparse_grab_m_1:w }{.{.-NoValue-}{.-NoValue-}.}{}.
+[]\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -629,7 +629,8 @@
*************************************************
> \foo=\protected macro:->\__xparse_start:nNNnnn {mG{test}sm}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_G:w \__xparse_grab_t:w
-*\__xparse_grab_m_1:w }{.{.test}..}{}.
+*\__xparse_grab_m_1:w }{\c__xparse_no_value_tl {\prg_do_nothing:
+test}\c__xparse_no_value_tl \c__xparse_no_value_tl }{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -742,8 +743,8 @@
. Redefining command \foo with sig. 'om' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {om}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
-[]\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_D:w \foo (arg 1) []\__xparse_expandable_grab_m:w
+}.
<recently read> }
l. ...}
> \foo code=\long macro:#1#2->(#1)(#2).
@@ -755,7 +756,7 @@
. Redefining command \foo with sig. '+o+m' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {+o+m}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
+?{\__xparse_expandable_grab_D:w \foo (arg 1)
[]\__xparse_expandable_grab_m_long:w }.
<recently read> }
l. ...}
@@ -781,9 +782,8 @@
. Redefining command \foo with sig. 'osm' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {osm}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
-[]\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
-*\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_D:w \foo (arg 1) []\__xparse_expandable_grab_t:w
+\__xparse_grabber_*:w *\__xparse_expandable_grab_m:w }.
<recently read> }
l. ...}
> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
@@ -856,7 +856,7 @@
. Defining command \foo with sig. 'o+m' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {o+m}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
+?{\__xparse_expandable_grab_D:w \foo (arg 1)
[]\__xparse_expandable_grab_m_long:w }.
<recently read> }
l. ...}
@@ -969,7 +969,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn {som}\environment
foo \environment foo code {\__xparse_grab_t:w *\__xparse_grab_D:w
-[]\__xparse_grab_m_1:w }{.{.-NoValue-}.}{}.
+[]\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -984,7 +984,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn
{so+m}\environment foo \environment foo code {\__xparse_grab_t:w
-*\__xparse_grab_D:w []\__xparse_grab_m_long:w }{.{.-NoValue-}.}{}.
+*\__xparse_grab_D:w []\__xparse_grab_m_long:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -999,7 +999,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn
{u{stop}om}\environment foo \environment foo code {\__xparse_grab_u:w
-{stop}\__xparse_grab_D:w []\__xparse_grab_m_1:w }{.{.-NoValue-}.}{}.
+{stop}\__xparse_grab_D:w []\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -1014,7 +1014,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn {moo}\environment
foo \environment foo code {\__xparse_grab_m_1:w \__xparse_grab_D_trailing:w
-[]\__xparse_grab_D_trailing:w []}{.{.-NoValue-}{.-NoValue-}}{}.
+[]\__xparse_grab_D_trailing:w []}{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -1229,7 +1229,7 @@
l. ... }
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
-\test- \xparse function is not expandable \__xparse_start_aux:nNNnnn {D...}\foo code {\__xparse_grab_D_trailing:w ..}{{..}}{}....\cs_end:
+\test- \xparse function is not expandable \__xparse_start_aux:nNNnnn {D...}\foo code {\__xparse_grab_D_trailing:w ..}{{.}}{}....\cs_end:
============================================================
============================================================
TEST 20: Checking for existing expandable definitions
Modified: trunk/l3packages/xparse/testfiles/xparse001.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse001.tlg 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/testfiles/xparse001.tlg 2017-03-13 01:19:18 UTC (rev 6990)
@@ -549,8 +549,7 @@
. Defining command \foo with sig. 'som' on line ....
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {som}\foo \foo code
-{\__xparse_grab_t:w *\__xparse_grab_D:w []\__xparse_grab_m_1:w
-}{.{.-NoValue-}.}{}.
+{\__xparse_grab_t:w *\__xparse_grab_D:w []\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -562,8 +561,7 @@
. Redefining command \foo with sig. 't+d()+m' on line ....
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {t+d()+m}\foo \foo code
-{\__xparse_grab_t:w +\__xparse_grab_D:w ()\__xparse_grab_m_long:w
-}{.{.-NoValue-}.}{}.
+{\__xparse_grab_t:w +\__xparse_grab_D:w ()\__xparse_grab_m_long:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -576,7 +574,9 @@
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {+t\par O{default}mmm}\foo
\foo code {\__xparse_grab_t_long:w \par \__xparse_grab_D:w
-[]\__xparse_grab_m_3:w }{.{.default}...}{}.
+[]\__xparse_grab_m_3:w }{\c__xparse_no_value_tl {\prg_do_nothing:
+default}\c__xparse_no_value_tl \c__xparse_no_value_tl \c__xparse_no_value_tl
+}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
@@ -589,7 +589,7 @@
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {momo}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_D:w []\__xparse_grab_m_1:w
-\__xparse_grab_D_trailing:w []}{.{.-NoValue-}.{.-NoValue-}}{}.
+\__xparse_grab_D_trailing:w []}{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -609,7 +609,7 @@
*************************************************
> \foo=\protected macro:->\__xparse_start:nNNnnn {mgom}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_G:w \__xparse_grab_D:w
-[]\__xparse_grab_m_1:w }{.{.-NoValue-}{.-NoValue-}.}{}.
+[]\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -629,7 +629,8 @@
*************************************************
> \foo=\protected macro:->\__xparse_start:nNNnnn {mG{test}sm}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_G:w \__xparse_grab_t:w
-*\__xparse_grab_m_1:w }{.{.test}..}{}.
+*\__xparse_grab_m_1:w }{\c__xparse_no_value_tl {\prg_do_nothing:
+test}\c__xparse_no_value_tl \c__xparse_no_value_tl }{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -742,8 +743,8 @@
. Redefining command \foo with sig. 'om' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {om}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
-[]\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_D:w \foo (arg 1) []\__xparse_expandable_grab_m:w
+}.
<recently read> }
l. ...}
> \foo code=\long macro:#1#2->(#1)(#2).
@@ -755,7 +756,7 @@
. Redefining command \foo with sig. '+o+m' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {+o+m}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
+?{\__xparse_expandable_grab_D:w \foo (arg 1)
[]\__xparse_expandable_grab_m_long:w }.
<recently read> }
l. ...}
@@ -781,9 +782,8 @@
. Redefining command \foo with sig. 'osm' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {osm}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
-[]\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
-*\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_D:w \foo (arg 1) []\__xparse_expandable_grab_t:w
+\__xparse_grabber_*:w *\__xparse_expandable_grab_m:w }.
<recently read> }
l. ...}
> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
@@ -856,7 +856,7 @@
. Defining command \foo with sig. 'o+m' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {o+m}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
+?{\__xparse_expandable_grab_D:w \foo (arg 1)
[]\__xparse_expandable_grab_m_long:w }.
<recently read> }
l. ...}
@@ -969,7 +969,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn {som}\environment
foo \environment foo code {\__xparse_grab_t:w *\__xparse_grab_D:w
-[]\__xparse_grab_m_1:w }{.{.-NoValue-}.}{}.
+[]\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -984,7 +984,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn
{so+m}\environment foo \environment foo code {\__xparse_grab_t:w
-*\__xparse_grab_D:w []\__xparse_grab_m_long:w }{.{.-NoValue-}.}{}.
+*\__xparse_grab_D:w []\__xparse_grab_m_long:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -999,7 +999,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn
{u{stop}om}\environment foo \environment foo code {\__xparse_grab_u:w
-{stop}\__xparse_grab_D:w []\__xparse_grab_m_1:w }{.{.-NoValue-}.}{}.
+{stop}\__xparse_grab_D:w []\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -1014,7 +1014,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn {moo}\environment
foo \environment foo code {\__xparse_grab_m_1:w \__xparse_grab_D_trailing:w
-[]\__xparse_grab_D_trailing:w []}{.{.-NoValue-}{.-NoValue-}}{}.
+[]\__xparse_grab_D_trailing:w []}{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -1225,7 +1225,7 @@
l. ... }
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
-\test- \xparse function is not expandable \__xparse_start_aux:nNNnnn {D...}\foo code {\__xparse_grab_D_trailing:w ..}{{..}}{}....\cs_end:
+\test- \xparse function is not expandable \__xparse_start_aux:nNNnnn {D...}\foo code {\__xparse_grab_D_trailing:w ..}{{.}}{}....\cs_end:
============================================================
============================================================
TEST 20: Checking for existing expandable definitions
Modified: trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg 2017-03-13 01:19:18 UTC (rev 6990)
@@ -549,8 +549,7 @@
. Defining command \foo with sig. 'som' on line ....
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {som}\foo \foo code
-{\__xparse_grab_t:w *\__xparse_grab_D:w []\__xparse_grab_m_1:w
-}{.{.-NoValue-}.}{}.
+{\__xparse_grab_t:w *\__xparse_grab_D:w []\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -562,8 +561,7 @@
. Redefining command \foo with sig. 't+d()+m' on line ....
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {t+d()+m}\foo \foo code
-{\__xparse_grab_t:w +\__xparse_grab_D:w ()\__xparse_grab_m_long:w
-}{.{.-NoValue-}.}{}.
+{\__xparse_grab_t:w +\__xparse_grab_D:w ()\__xparse_grab_m_long:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -576,7 +574,9 @@
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {+t\par O{default}mmm}\foo
\foo code {\__xparse_grab_t_long:w \par \__xparse_grab_D:w
-[]\__xparse_grab_m_3:w }{.{.default}...}{}.
+[]\__xparse_grab_m_3:w }{\c__xparse_no_value_tl {\prg_do_nothing:
+default}\c__xparse_no_value_tl \c__xparse_no_value_tl \c__xparse_no_value_tl
+}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4).
@@ -589,7 +589,7 @@
.................................................
> \foo=\protected macro:->\__xparse_start:nNNnnn {momo}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_D:w []\__xparse_grab_m_1:w
-\__xparse_grab_D_trailing:w []}{.{.-NoValue-}.{.-NoValue-}}{}.
+\__xparse_grab_D_trailing:w []}{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -609,7 +609,7 @@
*************************************************
> \foo=\protected macro:->\__xparse_start:nNNnnn {mgom}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_G:w \__xparse_grab_D:w
-[]\__xparse_grab_m_1:w }{.{.-NoValue-}{.-NoValue-}.}{}.
+[]\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -629,7 +629,8 @@
*************************************************
> \foo=\protected macro:->\__xparse_start:nNNnnn {mG{test}sm}\foo \foo code
{\__xparse_grab_m_1:w \__xparse_grab_G:w \__xparse_grab_t:w
-*\__xparse_grab_m_1:w }{.{.test}..}{}.
+*\__xparse_grab_m_1:w }{\c__xparse_no_value_tl {\prg_do_nothing:
+test}\c__xparse_no_value_tl \c__xparse_no_value_tl }{}.
<recently read> }
l. ...}
> \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -742,8 +743,8 @@
. Redefining command \foo with sig. 'om' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {om}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
-[]\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_D:w \foo (arg 1) []\__xparse_expandable_grab_m:w
+}.
<recently read> }
l. ...}
> \foo code=\long macro:#1#2->(#1)(#2).
@@ -755,7 +756,7 @@
. Redefining command \foo with sig. '+o+m' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {+o+m}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
+?{\__xparse_expandable_grab_D:w \foo (arg 1)
[]\__xparse_expandable_grab_m_long:w }.
<recently read> }
l. ...}
@@ -781,9 +782,8 @@
. Redefining command \foo with sig. 'osm' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {osm}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
-[]\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
-*\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_D:w \foo (arg 1) []\__xparse_expandable_grab_t:w
+\__xparse_grabber_*:w *\__xparse_expandable_grab_m:w }.
<recently read> }
l. ...}
> \foo code=\long macro:#1#2#3->(#1)(#2)(#3).
@@ -856,7 +856,7 @@
. Defining command \foo with sig. 'o+m' on line ....
.................................................
> \foo=macro:->\__xparse_start_expandable:nNNNNn {o+m}\foo \foo \foo code
-\foo defaults {\__xparse_expandable_grab_D:w \foo (arg 1)
+?{\__xparse_expandable_grab_D:w \foo (arg 1)
[]\__xparse_expandable_grab_m_long:w }.
<recently read> }
l. ...}
@@ -969,7 +969,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn {som}\environment
foo \environment foo code {\__xparse_grab_t:w *\__xparse_grab_D:w
-[]\__xparse_grab_m_1:w }{.{.-NoValue-}.}{}.
+[]\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -984,7 +984,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn
{so+m}\environment foo \environment foo code {\__xparse_grab_t:w
-*\__xparse_grab_D:w []\__xparse_grab_m_long:w }{.{.-NoValue-}.}{}.
+*\__xparse_grab_D:w []\__xparse_grab_m_long:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -999,7 +999,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn
{u{stop}om}\environment foo \environment foo code {\__xparse_grab_u:w
-{stop}\__xparse_grab_D:w []\__xparse_grab_m_1:w }{.{.-NoValue-}.}{}.
+{stop}\__xparse_grab_D:w []\__xparse_grab_m_1:w }{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -1014,7 +1014,7 @@
.................................................
> \environment foo=\protected macro:->\__xparse_start:nNNnnn {moo}\environment
foo \environment foo code {\__xparse_grab_m_1:w \__xparse_grab_D_trailing:w
-[]\__xparse_grab_D_trailing:w []}{.{.-NoValue-}{.-NoValue-}}{}.
+[]\__xparse_grab_D_trailing:w []}{}{}.
<recently read> }
l. ...}
> \environment foo code=\protected\long macro:#1#2#3->\cs_set_nopar:Npx
@@ -1229,7 +1229,7 @@
l. ... }
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
-\test- \xparse function is not expandable \__xparse_start_aux:nNNnnn {D...}\foo code {\__xparse_grab_D_trailing:w ..}{{..}}{}....\cs_end:
+\test- \xparse function is not expandable \__xparse_start_aux:nNNnnn {D...}\foo code {\__xparse_grab_D_trailing:w ..}{{.}}{}....\cs_end:
============================================================
============================================================
TEST 20: Checking for existing expandable definitions
Modified: trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg 2017-03-13 01:19:18 UTC (rev 6990)
@@ -1900,3 +1900,18 @@
. Defining command \foo with sig. 'm' on line ....
.................................................
============================================================
+============================================================
+TEST 25: NoValue passed to another command
+============================================================
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'oom' on line ....
+.................................................
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \baz with sig. 'mO{B}m' on line ....
+.................................................
+|-NoValue-|B|C|
+============================================================
Modified: trunk/l3packages/xparse/testfiles/xparse004.lvt
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse004.lvt 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/testfiles/xparse004.lvt 2017-03-13 01:19:18 UTC (rev 6990)
@@ -431,4 +431,11 @@
\DeclareDocumentCommand { \foo } { m } {|#1|}
}
+\TEST { NoValue~passed~to~another~command }
+ {
+ \DeclareDocumentCommand { \foo } { o o m } { \baz {#1} [#2] {#3} }
+ \DeclareDocumentCommand { \baz } { m O{B} m } { \TYPE { \tl_to_str:n { | #1 | #2 | #3 | } } }
+ \foo{C}
+ }
+
\END
Modified: trunk/l3packages/xparse/testfiles/xparse004.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse004.tlg 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/testfiles/xparse004.tlg 2017-03-13 01:19:18 UTC (rev 6990)
@@ -1900,3 +1900,18 @@
. Defining command \foo with sig. 'm' on line ....
.................................................
============================================================
+============================================================
+TEST 25: NoValue passed to another command
+============================================================
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \foo with sig. 'oom' on line ....
+.................................................
+.................................................
+. LaTeX info: "xparse/redefine-command"
+.
+. Redefining command \baz with sig. 'mO{B}m' on line ....
+.................................................
+|-NoValue-|B|C|
+============================================================
Modified: trunk/l3packages/xparse/xparse.dtx
===================================================================
--- trunk/l3packages/xparse/xparse.dtx 2017-03-12 05:08:10 UTC (rev 6989)
+++ trunk/l3packages/xparse/xparse.dtx 2017-03-13 01:19:18 UTC (rev 6990)
@@ -844,9 +844,8 @@
%
% \begin{variable}{\l_@@_defaults_bool, \l_@@_defaults_tl}
% The boolean indicates whether there are any argument with default
-% value; the token list holds the code to determine these default
-% values in terms of other arguments, and dummy code for arguments
-% that do not need a default.
+% value other than |-NoValue-|; the token list holds the code to
+% determine these default values in terms of other arguments.
% \begin{macrocode}
\bool_new:N \l_@@_defaults_bool
\tl_new:N \l_@@_defaults_tl
@@ -1380,7 +1379,7 @@
\@@_if_no_value:nTF {#2}
{
\tl_put_right:Nx \l_@@_tmpa_tl
- { { \exp_not:N \exp_not:n { \exp_not:o { \use_none:n #3 } } } }
+ { { \exp_not:N \exp_not:n { \exp_not:o {#3} } } }
}
{
\tl_put_right:Nn \l_@@_tmpa_tl
@@ -1500,7 +1499,7 @@
}
{
\@@_if_no_value:nTF {#2}
- { \exp_args:No \@@_end_expandable_defaults:nw { \use_none:n #1 } }
+ { \exp_args:No \@@_end_expandable_defaults:nw {#1} }
{ \@@_end_expandable_defaults:nw {#2} }
}
}
@@ -2262,40 +2261,40 @@
% \begin{macro}{\@@_add_default:n, \@@_add_default:, \@@_add_default_E:nn}
% \begin{macro}[aux]{\@@_add_default_E_aux:n}
% Store the default value of an argument, or rather code that gives
-% that default value (it may involve other arguments). Defaults are
-% always stored with a leading |.| except for \texttt{E}-type
-% arguments, to distinguish them. For \texttt{E}-type arguments, pad
-% the defaults |#2| with some |{-NoValue-}| until there are the same
-% numbers as embellishments~|#1|. Then for technical reasons make
-% sure the first default is wrapped in braces. These functions are
-% also used when defining expandable commands.
+% that default value (it may involve other arguments). This is
+% \cs{c_@@_no_value_tl} for arguments with no actual default or with
+% default |-NoValue-|; \cs{prg_do_nothing:} followed by a default
+% value for most others, and a token list of braced arguments for
+% \texttt{E}-type arguments. For \texttt{E}-type arguments, pad the
+% defaults |#2| with some |{-NoValue-}| until there are as many as
+% embellishments~|#1|. These functions are also used when defining
+% expandable commands.
% \begin{macrocode}
\cs_new_protected:Npn \@@_add_default:n #1
{
- \bool_set_true:N \l_@@_defaults_bool
- \tl_put_right:Nn \l_@@_defaults_tl { { . #1} }
+ \@@_if_no_value:nTF {#1}
+ { \@@_add_default: }
+ {
+ \bool_set_true:N \l_@@_defaults_bool
+ \tl_put_right:Nn \l_@@_defaults_tl { { \prg_do_nothing: #1 } }
+ }
}
\cs_new_protected:Npn \@@_add_default:
- { \tl_put_right:Nn \l_@@_defaults_tl { . } }
+ { \tl_put_right:Nn \l_@@_defaults_tl { \c_@@_no_value_tl } }
\cs_new_protected:Npn \@@_add_default_E:nn #1#2
{
\bool_set_true:N \l_@@_defaults_bool
- \tl_set:Nx \l_@@_tmpa_tl
- {
- \exp_not:n {#2}
- \prg_replicate:nn
- { \tl_count:n {#1} - \tl_count:n {#2} }
- { { \c_@@_no_value_tl } }
- }
\tl_put_right:Nx \l_@@_defaults_tl
{
{
- \exp_not:f
- { \exp_after:wN \@@_add_default_E_aux:n \l_@@_tmpa_tl }
+ \tl_map_function:nN {#2} \@@_add_default_E_aux:n
+ \prg_replicate:nn
+ { \tl_count:n {#1} - \tl_count:n {#2} }
+ { { \c_@@_no_value_tl } }
}
}
}
-\cs_new:Npn \@@_add_default_E_aux:n #1 { {#1} }
+\cs_new:Npn \@@_add_default_E_aux:n #1 { \exp_not:n { {#1} } }
% \end{macrocode}
% \end{macro}
% \end{macro}
More information about the latex3-commits
mailing list