[latex3-commits] [git/LaTeX3-latex3-latex3] master: Correct an assignment for \seq_shuffle:N inside a seq mapping (fix #687) (42c70c63f)
Bruno Le Floch
bruno at le-floch.fr
Sat Mar 14 10:53:08 CET 2020
Repository : https://github.com/latex3/latex3
On branch : master
Link : https://github.com/latex3/latex3/commit/42c70c63fd83324c5792dd14538a39dd7e388a55
>---------------------------------------------------------------
commit 42c70c63fd83324c5792dd14538a39dd7e388a55
Author: Bruno Le Floch <bruno at le-floch.fr>
Date: Sat Mar 14 10:51:35 2020 +0100
Correct an assignment for \seq_shuffle:N inside a seq mapping (fix #687)
We were making a local assignment to \@@_item:n within a group, but
then in the same group also calling a seq function that used the
general \@@_push_item_def: approach, which saves \@@_item:n globally,
then later restores it globally at \@@_pop_item_def:.
>---------------------------------------------------------------
42c70c63fd83324c5792dd14538a39dd7e388a55
l3kernel/CHANGELOG.md | 3 +++
l3kernel/l3seq.dtx | 4 +++-
l3kernel/testfiles/m3seq009.lvt | 17 ++++++++++++++++-
l3kernel/testfiles/m3seq009.tlg | 7 +++++++
4 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index 6076561c5..5e2a5f06b 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -7,6 +7,9 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+### Fixed
+- Nesting of `\seq_shuffle:N` in another sequence mapping (issue #687)
+
## [2020-03-06]
### Added
diff --git a/l3kernel/l3seq.dtx b/l3kernel/l3seq.dtx
index 44ce65943..dd37f2242 100644
--- a/l3kernel/l3seq.dtx
+++ b/l3kernel/l3seq.dtx
@@ -1525,9 +1525,11 @@
}
{
\group_begin:
- \cs_set_eq:NN \@@_item:n \@@_shuffle_item:n
\int_zero:N \l_@@_internal_a_int
+ \@@_push_item_def:
+ \cs_gset_eq:NN \@@_item:n \@@_shuffle_item:n
#2
+ \@@_pop_item_def:
\seq_gset_from_inline_x:Nnn \g_@@_internal_seq
{ \int_step_function:nN { \l_@@_internal_a_int } }
{ \tex_the:D \tex_toks:D ##1 }
diff --git a/l3kernel/testfiles/m3seq009.lvt b/l3kernel/testfiles/m3seq009.lvt
index 59a288d3c..8dae69c90 100644
--- a/l3kernel/testfiles/m3seq009.lvt
+++ b/l3kernel/testfiles/m3seq009.lvt
@@ -1,5 +1,5 @@
%
-% Copyright (C) 2018 The LaTeX3 Project
+% Copyright (C) 2018,2020 The LaTeX3 Project
%
\documentclass{minimal}
@@ -44,4 +44,19 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\seq_set_from_clist:Nn \l_tmpa_seq { A, B, C, D }
+\seq_set_from_clist:Nn \l_tmpb_seq { a, b, c }
+\sys_gset_rand_seed:n { 1234 }
+
+\TEST { seq_shuffle~nesting }
+ {
+ \seq_map_inline:Nn \l_tmpb_seq
+ {
+ \seq_shuffle:N \l_tmpa_seq
+ \TYPE { #1 ; \seq_map_function:NN \l_tmpa_seq \prg_do_nothing: }
+ }
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\END
diff --git a/l3kernel/testfiles/m3seq009.tlg b/l3kernel/testfiles/m3seq009.tlg
index fca806927..ec6661a9f 100644
--- a/l3kernel/testfiles/m3seq009.tlg
+++ b/l3kernel/testfiles/m3seq009.tlg
@@ -8,3 +8,10 @@ TEST 1: seq_shuffle
||
4,5,3,9,6,7,2,1,10,8
============================================================
+============================================================
+TEST 2: seq_shuffle nesting
+============================================================
+a;{B}{A}{C}{D}
+b;{A}{B}{C}{D}
+c;{A}{C}{D}{B}
+============================================================
More information about the latex3-commits
mailing list.