[latex3-commits] [l3svn] r6911 - Fix bug where defaults of a previous definition were used

noreply at latex-project.org noreply at latex-project.org
Mon Feb 13 16:23:53 CET 2017


Author: bruno
Date: 2017-02-13 16:23:53 +0100 (Mon, 13 Feb 2017)
New Revision: 6911

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:
Fix bug where defaults of a previous definition were used

I was using the existence of "\foo defaults" as a proxy for
knowing whether "\foo" had defaults but did not redefine that
function when there was no default, hence an old definition
was used.  Now instead use a recognizable marker "?" to denote
absence of defaults.


Modified: trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/testfiles/xparse001.ptex.tlg	2017-02-13 15:23:53 UTC (rev 6911)
@@ -36,7 +36,7 @@
 | A new command '\foo' will be created.
 |...............................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {}\foo  \foo code
-\foo defaults {}.
+?{}.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:->First definition.
@@ -52,7 +52,7 @@
 . Defining command \foo with sig. 'm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1->(#1).
@@ -64,7 +64,7 @@
 . Redefining command \foo with sig. 'mm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mm}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -76,8 +76,8 @@
 . Redefining command \foo with sig. 'mmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -89,9 +89,8 @@
 . Redefining command \foo with sig. 'mmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -103,9 +102,9 @@
 . Redefining command \foo with sig. 'mmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
@@ -117,10 +116,9 @@
 . Redefining command \foo with sig. 'mmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
@@ -132,10 +130,10 @@
 . Redefining command \foo with sig. 'mmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -148,11 +146,10 @@
 . Redefining command \foo with sig. 'mmmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmmm}\foo 
-\foo code \foo defaults {\__xparse_expandable_grab_m:w
+\foo code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -165,11 +162,11 @@
 . Redefining command \foo with sig. 'mmmmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmmmm}\foo 
-\foo code \foo defaults {\__xparse_expandable_grab_m:w
+\foo code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -466,8 +463,7 @@
 . Defining command \foo with sig. 'lm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {lm}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_u:w \foo (arg 1)
-\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_u:w \foo (arg 1) \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -479,8 +475,8 @@
 . Redefining command \foo with sig. 'mlm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mlm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_u:w \foo (arg 2) \__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_u:w \foo (arg
+2) \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -492,8 +488,8 @@
 . Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn
-{u{end}u{stop!}}\foo  \foo code \foo defaults {\__xparse_expandable_grab_u:w
-\foo (arg 1) \__xparse_expandable_grab_u:w \foo (arg 2) }.
+{u{end}u{stop!}}\foo  \foo code ?{\__xparse_expandable_grab_u:w \foo (arg 1)
+\__xparse_expandable_grab_u:w \foo (arg 2) }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -505,7 +501,7 @@
 . Redefining command \foo with sig. 'lll' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {lll}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_u:w \foo (arg 1)
+code ?{\__xparse_expandable_grab_u:w \foo (arg 1)
 \__xparse_expandable_grab_u:w \foo (arg 2) \__xparse_expandable_grab_u:w \foo
 (arg 3) }.
 <recently read> }
@@ -690,8 +686,8 @@
 . 
 . Defining command \foo with sig. 'm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w }.
+> \foo=macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\long macro:#1->(#1).
@@ -702,8 +698,8 @@
 . 
 . Redefining command \foo with sig. '+m' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {+m}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w }.
+> \foo=macro:->\__xparse_start_expandable:nNNNn {+m}\foo  \foo code
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\long macro:#1->(#1).
@@ -714,8 +710,8 @@
 . 
 . Redefining command \foo with sig. 'mmm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+> \foo=macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo code
+?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
@@ -753,8 +749,8 @@
 . 
 . Redefining command \foo with sig. 'sm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {sm}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
+> \foo=macro:->\__xparse_start_expandable:nNNNn {sm}\foo  \foo code
+?{\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
 *\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}

Modified: trunk/l3packages/xparse/testfiles/xparse001.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse001.tlg	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/testfiles/xparse001.tlg	2017-02-13 15:23:53 UTC (rev 6911)
@@ -36,7 +36,7 @@
 | A new command '\foo' will be created.
 |...............................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {}\foo  \foo code
-\foo defaults {}.
+?{}.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:->First definition.
@@ -52,7 +52,7 @@
 . Defining command \foo with sig. 'm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1->(#1).
@@ -64,7 +64,7 @@
 . Redefining command \foo with sig. 'mm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mm}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -76,8 +76,8 @@
 . Redefining command \foo with sig. 'mmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -89,9 +89,8 @@
 . Redefining command \foo with sig. 'mmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -103,9 +102,9 @@
 . Redefining command \foo with sig. 'mmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
@@ -117,10 +116,9 @@
 . Redefining command \foo with sig. 'mmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
@@ -132,10 +130,10 @@
 . Redefining command \foo with sig. 'mmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -148,11 +146,10 @@
 . Redefining command \foo with sig. 'mmmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmmm}\foo 
-\foo code \foo defaults {\__xparse_expandable_grab_m:w
+\foo code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -165,11 +162,11 @@
 . Redefining command \foo with sig. 'mmmmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmmmm}\foo 
-\foo code \foo defaults {\__xparse_expandable_grab_m:w
+\foo code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -466,8 +463,7 @@
 . Defining command \foo with sig. 'lm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {lm}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_u:w \foo (arg 1)
-\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_u:w \foo (arg 1) \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -479,8 +475,8 @@
 . Redefining command \foo with sig. 'mlm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mlm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_u:w \foo (arg 2) \__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_u:w \foo (arg
+2) \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -492,8 +488,8 @@
 . Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn
-{u{end}u{stop!}}\foo  \foo code \foo defaults {\__xparse_expandable_grab_u:w
-\foo (arg 1) \__xparse_expandable_grab_u:w \foo (arg 2) }.
+{u{end}u{stop!}}\foo  \foo code ?{\__xparse_expandable_grab_u:w \foo (arg 1)
+\__xparse_expandable_grab_u:w \foo (arg 2) }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -505,7 +501,7 @@
 . Redefining command \foo with sig. 'lll' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {lll}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_u:w \foo (arg 1)
+code ?{\__xparse_expandable_grab_u:w \foo (arg 1)
 \__xparse_expandable_grab_u:w \foo (arg 2) \__xparse_expandable_grab_u:w \foo
 (arg 3) }.
 <recently read> }
@@ -690,8 +686,8 @@
 . 
 . Defining command \foo with sig. 'm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w }.
+> \foo=macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\long macro:#1->(#1).
@@ -702,8 +698,8 @@
 . 
 . Redefining command \foo with sig. '+m' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {+m}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w }.
+> \foo=macro:->\__xparse_start_expandable:nNNNn {+m}\foo  \foo code
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\long macro:#1->(#1).
@@ -714,8 +710,8 @@
 . 
 . Redefining command \foo with sig. 'mmm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+> \foo=macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo code
+?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
@@ -753,8 +749,8 @@
 . 
 . Redefining command \foo with sig. 'sm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {sm}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
+> \foo=macro:->\__xparse_start_expandable:nNNNn {sm}\foo  \foo code
+?{\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
 *\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}

Modified: trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/testfiles/xparse001.uptex.tlg	2017-02-13 15:23:53 UTC (rev 6911)
@@ -36,7 +36,7 @@
 | A new command '\foo' will be created.
 |...............................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {}\foo  \foo code
-\foo defaults {}.
+?{}.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:->First definition.
@@ -52,7 +52,7 @@
 . Defining command \foo with sig. 'm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1->(#1).
@@ -64,7 +64,7 @@
 . Redefining command \foo with sig. 'mm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mm}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -76,8 +76,8 @@
 . Redefining command \foo with sig. 'mmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -89,9 +89,8 @@
 . Redefining command \foo with sig. 'mmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4->(#1)(#2)(#3)(#4).
@@ -103,9 +102,9 @@
 . Redefining command \foo with sig. 'mmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4#5->(#1)(#2)(#3)(#4)(#5).
@@ -117,10 +116,9 @@
 . Redefining command \foo with sig. 'mmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3#4#5#6->(#1)(#2)(#3)(#4)(#5)(#6).
@@ -132,10 +130,10 @@
 . Redefining command \foo with sig. 'mmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -148,11 +146,10 @@
 . Redefining command \foo with sig. 'mmmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmmm}\foo 
-\foo code \foo defaults {\__xparse_expandable_grab_m:w
+\foo code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -165,11 +162,11 @@
 . Redefining command \foo with sig. 'mmmmmmmmm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mmmmmmmmm}\foo 
-\foo code \foo defaults {\__xparse_expandable_grab_m:w
+\foo code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w }.
+\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long
@@ -466,8 +463,7 @@
 . Defining command \foo with sig. 'lm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {lm}\foo  \foo code
-\foo defaults {\__xparse_expandable_grab_u:w \foo (arg 1)
-\__xparse_expandable_grab_m:w }.
+?{\__xparse_expandable_grab_u:w \foo (arg 1) \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -479,8 +475,8 @@
 . Redefining command \foo with sig. 'mlm' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {mlm}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_m:w
-\__xparse_expandable_grab_u:w \foo (arg 2) \__xparse_expandable_grab_m:w }.
+code ?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_u:w \foo (arg
+2) \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2#3->(#1)(#2)(#3).
@@ -492,8 +488,8 @@
 . Redefining command \foo with sig. 'u{end}u{stop!}' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn
-{u{end}u{stop!}}\foo  \foo code \foo defaults {\__xparse_expandable_grab_u:w
-\foo (arg 1) \__xparse_expandable_grab_u:w \foo (arg 2) }.
+{u{end}u{stop!}}\foo  \foo code ?{\__xparse_expandable_grab_u:w \foo (arg 1)
+\__xparse_expandable_grab_u:w \foo (arg 2) }.
 <recently read> }
 l. ...}
 > \foo code=\protected\long macro:#1#2->(#1)(#2).
@@ -505,7 +501,7 @@
 . Redefining command \foo with sig. 'lll' on line ....
 .................................................
 > \foo=\protected macro:->\__xparse_start_expandable:nNNNn {lll}\foo  \foo
-code \foo defaults {\__xparse_expandable_grab_u:w \foo (arg 1)
+code ?{\__xparse_expandable_grab_u:w \foo (arg 1)
 \__xparse_expandable_grab_u:w \foo (arg 2) \__xparse_expandable_grab_u:w \foo
 (arg 3) }.
 <recently read> }
@@ -690,8 +686,8 @@
 . 
 . Defining command \foo with sig. 'm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w }.
+> \foo=macro:->\__xparse_start_expandable:nNNNn {m}\foo  \foo code
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\long macro:#1->(#1).
@@ -702,8 +698,8 @@
 . 
 . Redefining command \foo with sig. '+m' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {+m}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w }.
+> \foo=macro:->\__xparse_start_expandable:nNNNn {+m}\foo  \foo code
+?{\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
 > \foo code=\long macro:#1->(#1).
@@ -714,8 +710,8 @@
 . 
 . Redefining command \foo with sig. 'mmm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
+> \foo=macro:->\__xparse_start_expandable:nNNNn {mmm}\foo  \foo code
+?{\__xparse_expandable_grab_m:w \__xparse_expandable_grab_m:w
 \__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}
@@ -753,8 +749,8 @@
 . 
 . Redefining command \foo with sig. 'sm' on line ....
 .................................................
-> \foo=macro:->\__xparse_start_expandable:nNNNn {sm}\foo  \foo code \foo
-defaults {\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
+> \foo=macro:->\__xparse_start_expandable:nNNNn {sm}\foo  \foo code
+?{\__xparse_expandable_grab_t:w \__xparse_grabber_*:w
 *\__xparse_expandable_grab_m:w }.
 <recently read> }
 l. ...}

Modified: trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/testfiles/xparse004.luatex.tlg	2017-02-13 15:23:53 UTC (rev 6911)
@@ -1662,3 +1662,19 @@
 .................................................
 |abc||def|
 ============================================================
+============================================================
+TEST 23: Same expandable command with/without defaults
+============================================================
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'O{a}m' on line ....
+.................................................
+|a|b|{c}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm' on line ....
+.................................................
+|b|c|
+============================================================

Modified: trunk/l3packages/xparse/testfiles/xparse004.lvt
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse004.lvt	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/testfiles/xparse004.lvt	2017-02-13 15:23:53 UTC (rev 6911)
@@ -403,4 +403,13 @@
     \DeclareDocumentCommand { \D } { o l m } { \TYPE { |#1|#2|#3| } }
     \D [abc]{def}
   }
+
+\TEST { Same~expandable~command~with/without~defaults }
+  {
+    \DeclareExpandableDocumentCommand { \foo } { O{a} m } { |#1|#2| }
+    \TYPE { \foo {b} {c} }
+    \DeclareExpandableDocumentCommand { \foo } { m m } { |#1|#2| }
+    \TYPE { \foo {b} {c} }
+  }
+
 \END

Modified: trunk/l3packages/xparse/testfiles/xparse004.tlg
===================================================================
--- trunk/l3packages/xparse/testfiles/xparse004.tlg	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/testfiles/xparse004.tlg	2017-02-13 15:23:53 UTC (rev 6911)
@@ -1662,3 +1662,19 @@
 .................................................
 |abc||def|
 ============================================================
+============================================================
+TEST 23: Same expandable command with/without defaults
+============================================================
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'O{a}m' on line ....
+.................................................
+|a|b|{c}
+.................................................
+. LaTeX info: "xparse/redefine-command"
+. 
+. Redefining command \foo with sig. 'mm' on line ....
+.................................................
+|b|c|
+============================================================

Modified: trunk/l3packages/xparse/xparse.dtx
===================================================================
--- trunk/l3packages/xparse/xparse.dtx	2017-02-13 15:15:32 UTC (rev 6910)
+++ trunk/l3packages/xparse/xparse.dtx	2017-02-13 15:23:53 UTC (rev 6911)
@@ -1155,7 +1155,9 @@
           { \exp_not:n {#2} }
           \exp_not:c { \l_@@_function_tl \c_space_tl }
           \exp_not:c { \l_@@_function_tl \c_space_tl code }
-          \exp_not:c { \l_@@_function_tl \c_space_tl defaults }
+          \bool_if:NTF \l_@@_defaults_bool
+            { \exp_not:c { \l_@@_function_tl \c_space_tl defaults } }
+            { ? }
           { \exp_not:o \l_@@_signature_tl }
       }
     \bool_if:NTF \l_@@_all_long_bool
@@ -1422,7 +1424,8 @@
 % \begin{macro}[EXP,aux]{\@@_end_expandable_defaults:nnw}
 % \begin{macro}[EXP,aux]{\@@_end_expandable_defaults:nw}
 % \begin{macro}[EXP,aux]{\@@_end_expandable_defaults_E:nnw}
-%   Followed by a function |#1| to determine default values, the code
+%   Followed by a function |#1| to determine default values (or |?| if
+%   there are no defaults), the code
 %   |#2|, arguments that have been grabbed, then \cs{q_@@} and a generic
 %   grabber.  The idea to find default values is similar to the
 %   non-expandable case but we cannot define an auxiliary function, so
@@ -1439,7 +1442,7 @@
   { \exp_args:No \@@_end_expandable_aux:nNNN {#3} #1 #2 #4 }
 \cs_new:Npn \@@_end_expandable_aux:nNNN #1#2#3#4
   {
-    \cs_if_exist:NF #2 { \exp_after:wN \use_iv:nnnn }
+    \token_if_eq_charcode:NNT ? #2 { \exp_after:wN \use_iv:nnnn }
     \@@_end_expandable_defaults:nnnNNn {#1} { } {#1} #2#3
       { } { } { } { } { } { } { } { } { } { }
       {



More information about the latex3-commits mailing list