[latex3-commits] [l3svn] r7084 - Rename l3array to l3intarray

noreply at latex-project.org noreply at latex-project.org
Thu Apr 13 15:37:50 CEST 2017


Author: bruno
Date: 2017-04-13 15:37:50 +0200 (Thu, 13 Apr 2017)
New Revision: 7084

Added:
   trunk/l3experimental/l3str/l3intarray.dtx
   trunk/l3experimental/l3str/testfiles/m3intarray001.luatex.tlg
   trunk/l3experimental/l3str/testfiles/m3intarray001.lvt
   trunk/l3experimental/l3str/testfiles/m3intarray001.tlg
Removed:
   trunk/l3experimental/l3str/l3array.dtx
   trunk/l3experimental/l3str/testfiles/m3array001.luatex.tlg
   trunk/l3experimental/l3str/testfiles/m3array001.lvt
   trunk/l3experimental/l3str/testfiles/m3array001.tlg
Modified:
   trunk/l3experimental/l3str/l3regex.dtx
   trunk/l3experimental/l3str/l3str.ins
Log:
Rename l3array to l3intarray


Deleted: trunk/l3experimental/l3str/l3array.dtx
===================================================================
--- trunk/l3experimental/l3str/l3array.dtx	2017-04-13 13:15:13 UTC (rev 7083)
+++ trunk/l3experimental/l3str/l3array.dtx	2017-04-13 13:37:50 UTC (rev 7084)
@@ -1,271 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: l3array.dtx Copyright (C) 2017 The LaTeX3 Project
-%
-% It may be distributed and/or modified under the conditions of the
-% LaTeX Project Public License (LPPL), either version 1.3c of this
-% license or (at your option) any later version.  The latest version
-% of this license is in the file
-%
-%    http://www.latex-project.org/lppl.txt
-%
-% This file is part of the "l3experimental bundle" (The Work in LPPL)
-% and all files in that bundle must be distributed together.
-%
-% -----------------------------------------------------------------------
-%
-% The development version of the bundle can be found at
-%
-%    https://github.com/latex3/latex3
-%
-% for those people who are interested.
-%
-%<*driver|package>
-% The version of expl3 required is tested as early as possible, as
-% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2017/04/01]
-%<package>\@ifpackagelater{expl3}{2017/04/01}
-%<package>  {}
-%<package>  {%
-%<package>    \PackageError{l3array}{Support package l3kernel too old}
-%<package>      {%
-%<package>        Please install an up to date version of l3kernel\MessageBreak
-%<package>        using your TeX package manager or from CTAN.\MessageBreak
-%<package>        \MessageBreak
-%<package>        Loading l3array will abort!%
-%<package>      }%
-%<package>    \endinput
-%<package>  }
-%</driver|package>
-%<*driver>
-\documentclass[full]{l3doc}
-\usepackage{amsmath}
-\begin{document}
-  \DocInput{\jobname.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-%
-% \title{^^A
-%   The \textsf{l3array} package: low-level arrays of small integers^^A
-% }
-%
-% \author{^^A
-%  The \LaTeX3 Project\thanks
-%    {^^A
-%      E-mail:
-%        \href{mailto:latex-team at latex-project.org}
-%          {latex-team at latex-project.org}^^A
-%    }^^A
-% }
-%
-% \date{Released 2017/04/01}
-%
-% \maketitle
-%
-% \begin{documentation}
-%
-% \section{\pkg{l3array} documentation}
-%
-% This module provides no user function: at present it is meant for
-% kernel use only.
-%
-% It is a wrapper around the \tn{fontdimen} primitive, used to store
-% arrays of integers (with a restricted range: absolute value at most
-% $2^{30}-1$).  In contrast to \pkg{l3seq} sequences the access to
-% individual entries is done in constant time rather than linear time,
-% but only integers can be stored.  More precisely, the primitive
-% \tn{fontdimen} stores dimensions but the \pkg{l3array} package
-% transparently converts these from/to integers.  Assignments are always
-% global.
-%
-% While \LuaTeX{}'s memory is extensible, other engines can
-% \enquote{only} deal with a bit less than $4\times 10^6$ entries in all
-% \tn{fontdimen} arrays combined (with default \TeX{}Live settings).
-%
-% \subsection{Internal functions}
-%
-% \begin{function}{\__array_new:Nn}
-%   \begin{syntax}
-%     \cs{__array_new:Nn} \meta{array~var} \Arg{size}
-%   \end{syntax}
-%   Evaluates the integer expression \meta{size} and allocates an
-%   \meta{array variable} with that number of (zero) entries.
-% \end{function}
-%
-% \begin{function}[EXP]{\__array_count:N}
-%   \begin{syntax}
-%     \cs{__array_count:N} \meta{array~var}
-%   \end{syntax}
-%   Expands to the number of entries in the \meta{array variable}.
-%   Contrarily to \cs{seq_count:N} this is performed in constant time.
-% \end{function}
-%
-% \begin{function}{\__array_gset:Nnn, \__array_gset_fast:Nnn}
-%   \begin{syntax}
-%     \cs{__array_gset:Nnn} \meta{array~var} \Arg{position} \Arg{value}
-%     \cs{__array_gset_fast:Nnn} \meta{array~var} \Arg{position} \Arg{value}
-%   \end{syntax}
-%   Stores the result of evaluating the integer expression \meta{value}
-%   into the \meta{array variable} at the (integer expression)
-%   \meta{position}.  While \cs{__array_gset:Nnn} checks that the
-%   \meta{position} is between $1$ and the \cs{__array_count:N} and that
-%   the \meta{value}'s absolute value is at most $2^{30}-1$, the
-%   \enquote{fast} function performs no such bound check.
-%   Assignments are always global.
-% \end{function}
-%
-% \begin{function}[EXP]{\__array_item:Nn, \__array_item_fast:Nn}
-%   \begin{syntax}
-%     \cs{__array_item:Nn} \meta{array~var} \Arg{position}
-%     \cs{__array_item_fast:Nn} \meta{array~var} \Arg{position}
-%   \end{syntax}
-%   Expands to the integer entry stored at the (integer expression)
-%   \meta{position} in the \meta{array variable}.  While
-%   \cs{__array_item:Nn} checks that the \meta{position} is between $1$
-%   and the \cs{__array_count:N}, the \enquote{fast} function performs
-%   no such bound check.
-% \end{function}
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3array} implementation}
-%
-%    \begin{macrocode}
-%<*initex|package>
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-%<@@=array>
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\ProvidesExplPackage{l3array}{2017/04/01}{}
-  {L3 Experimental low-level arrays of small integers}
-%    \end{macrocode}
-%
-% \subsection{Allocating arrays}
-%
-% \begin{variable}{\g_@@_font_int}
-%   Used to assign one font per array.
-%    \begin{macrocode}
-\int_new:N \g_@@_font_int
-%    \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}[int]{\@@_new:Nn}
-%   Declare |#1| to be a font (arbitrarily |cmr10| at a never-used
-%   size).  Store the array's size as the \tn{hyphenchar} of that font
-%   and make sure enough \tn{fontdimen} are allocated, by setting the
-%   last one.  Then clear any \tn{fontdimen} that |cmr10| starts with.
-%   It seems \LuaTeX{}'s |cmr10| has an extra \tn{fontdimen} parameter
-%   number $8$ compared to other engines (for a math font we would
-%   replace $8$ by $22$ or some such).
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_new:Nn #1#2
-  {
-    \__chk_if_free_cs:N #1
-    \int_gincr:N \g_@@_font_int
-    \tex_global:D \tex_font:D #1 = cmr10~at~ \g_@@_font_int sp \scan_stop:
-    \tex_hyphenchar:D #1 = \int_eval:n {#2} \scan_stop:
-    \int_compare:nNnT { \tex_hyphenchar:D #1 } > 0
-      { \tex_fontdimen:D \tex_hyphenchar:D #1 #1 = 0 sp \scan_stop: }
-    \int_step_inline:nnnn { 1 } { 1 } { 8 }
-      { \tex_fontdimen:D ##1 #1 = 0 sp \scan_stop: }
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[int, EXP]{\@@_count:N}
-%   Size of an array.
-%    \begin{macrocode}
-\cs_new:Npn \@@_count:N #1 { \tex_the:D \tex_hyphenchar:D #1 }
-%    \end{macrocode}
-% \end{macro}
-%
-% \subsection{Array items}
-%
-% \begin{macro}[int]{\@@_gset:Nnn, \@@_gset_fast:Nnn}
-% \begin{macro}[aux]{\@@_gset_aux:Nnn}
-%   Set the appropriate \tn{fontdimen}.  The slow version checks the
-%   position and value are within bounds.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_gset_fast:Nnn #1#2#3
-  { \tex_fontdimen:D \int_eval:n {#2} #1 = \int_eval:n {#3} sp \scan_stop: }
-\cs_new_protected:Npn \@@_gset:Nnn #1#2#3
-  {
-    \exp_args:Nff \@@_gset_aux:Nnn #1
-      { \int_eval:n {#2} } { \int_eval:n {#3} }
-  }
-\cs_new_protected:Npn \@@_gset_aux:Nnn #1#2#3
-  {
-    \int_compare:nTF { 1 <= #2 <= \@@_count:N #1 }
-      {
-        \int_compare:nTF { - \c_max_dim <= \int_abs:n {#3} <= \c_max_dim }
-          { \@@_gset_fast:Nnn #1 {#2} {#3} }
-          {
-            \__msg_kernel_error:nnxxxx { array } { overflow }
-              { \token_to_str:N #1 } {#2} {#3}
-              { \int_compare:nNnT {#3} < 0 { - } \__int_value:w \c_max_dim }
-            \@@_gset_fast:Nnn #1 {#2}
-              { \int_compare:nNnT {#3} < 0 { - } \c_max_dim }
-          }
-      }
-      {
-        \__msg_kernel_error:nnxxx { array } { out-of-bounds }
-          { \token_to_str:N #1 } {#2} { \@@_count:N #1 }
-      }
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_item:Nn, \@@_item_fast:Nn}
-% \begin{macro}[aux]{\@@_item_aux:Nn}
-%   Get the appropriate \tn{fontdimen} and perform bound checks if requested.
-%    \begin{macrocode}
-\cs_new:Npn \@@_item_fast:Nn #1#2
-  { \__int_value:w \tex_fontdimen:D \int_eval:n {#2} #1 }
-\cs_new:Npn \@@_item:Nn #1#2
-  { \exp_args:Nf \@@_item_aux:Nn #1 { \int_eval:n {#2} } }
-\cs_new:Npn \@@_item_aux:Nn #1#2
-  {
-    \int_compare:nTF { 1 <= #2 <= \@@_count:N #1 }
-      { \@@_item_fast:Nn #1 {#2} }
-      {
-        \__msg_kernel_expandable_error:nnnnn { array } { out-of-bounds }
-          { \token_to_str:N #1 } {#2} { \@@_count:N #1 }
-        0
-      }
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Messages}
-%
-%    \begin{macrocode}
-\__msg_kernel_new:nnnn { array } { overflow }
-  { Integers~larger~than~2^{30}-1~cannot~be~stored~in~arrays. }
-  {
-    An~attempt~was~made~to~store~#3~at~position~#2~in~the~array~'#1'.~
-    The~largest~allowed~value~#4~will~be~used~instead.
-  }
-\__msg_kernel_new:nnnn { array } { out-of-bounds }
-  { Access~to~an~entry~beyond~an~array's~bounds. }
-  {
-    An~attempt~was~made~to~access~or~store~data~at~position~#2~of~the~
-    array~'#1',~but~this~array~has~entries~at~positions~from~1~to~#3.
-  }
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-%</initex|package>
-%    \end{macrocode}
-%
-% \end{implementation}
-%
-% \PrintIndex

Copied: trunk/l3experimental/l3str/l3intarray.dtx (from rev 7082, trunk/l3experimental/l3str/l3array.dtx)
===================================================================
--- trunk/l3experimental/l3str/l3intarray.dtx	                        (rev 0)
+++ trunk/l3experimental/l3str/l3intarray.dtx	2017-04-13 13:37:50 UTC (rev 7084)
@@ -0,0 +1,271 @@
+% \iffalse meta-comment
+%
+%% File: l3intarray.dtx Copyright (C) 2017 The LaTeX3 Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version.  The latest version
+% of this license is in the file
+%
+%    http://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+%    https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver|package>
+% The version of expl3 required is tested as early as possible, as
+% some really old versions do not define \ProvidesExplPackage.
+\RequirePackage{expl3}[2017/04/01]
+%<package>\@ifpackagelater{expl3}{2017/04/01}
+%<package>  {}
+%<package>  {%
+%<package>    \PackageError{l3intarray}{Support package l3kernel too old}
+%<package>      {%
+%<package>        Please install an up to date version of l3kernel\MessageBreak
+%<package>        using your TeX package manager or from CTAN.\MessageBreak
+%<package>        \MessageBreak
+%<package>        Loading l3intarray will abort!%
+%<package>      }%
+%<package>    \endinput
+%<package>  }
+%</driver|package>
+%<*driver>
+\documentclass[full]{l3doc}
+\usepackage{amsmath}
+\begin{document}
+  \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \title{^^A
+%   The \textsf{l3intarray} package: low-level arrays of small integers^^A
+% }
+%
+% \author{^^A
+%  The \LaTeX3 Project\thanks
+%    {^^A
+%      E-mail:
+%        \href{mailto:latex-team at latex-project.org}
+%          {latex-team at latex-project.org}^^A
+%    }^^A
+% }
+%
+% \date{Released 2017/04/01}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{\pkg{l3intarray} documentation}
+%
+% This module provides no user function: at present it is meant for
+% kernel use only.
+%
+% It is a wrapper around the \tn{fontdimen} primitive, used to store
+% arrays of integers (with a restricted range: absolute value at most
+% $2^{30}-1$).  In contrast to \pkg{l3seq} sequences the access to
+% individual entries is done in constant time rather than linear time,
+% but only integers can be stored.  More precisely, the primitive
+% \tn{fontdimen} stores dimensions but the \pkg{l3intarray} package
+% transparently converts these from/to integers.  Assignments are always
+% global.
+%
+% While \LuaTeX{}'s memory is extensible, other engines can
+% \enquote{only} deal with a bit less than $4\times 10^6$ entries in all
+% \tn{fontdimen} arrays combined (with default \TeX{}Live settings).
+%
+% \subsection{Internal functions}
+%
+% \begin{function}{\__intarray_new:Nn}
+%   \begin{syntax}
+%     \cs{__intarray_new:Nn} \meta{intarray~var} \Arg{size}
+%   \end{syntax}
+%   Evaluates the integer expression \meta{size} and allocates an
+%   \meta{integer array variable} with that number of (zero) entries.
+% \end{function}
+%
+% \begin{function}[EXP]{\__intarray_count:N}
+%   \begin{syntax}
+%     \cs{__intarray_count:N} \meta{intarray~var}
+%   \end{syntax}
+%   Expands to the number of entries in the \meta{integer array variable}.
+%   Contrarily to \cs{seq_count:N} this is performed in constant time.
+% \end{function}
+%
+% \begin{function}{\__intarray_gset:Nnn, \__intarray_gset_fast:Nnn}
+%   \begin{syntax}
+%     \cs{__intarray_gset:Nnn} \meta{intarray~var} \Arg{position} \Arg{value}
+%     \cs{__intarray_gset_fast:Nnn} \meta{intarray~var} \Arg{position} \Arg{value}
+%   \end{syntax}
+%   Stores the result of evaluating the integer expression \meta{value}
+%   into the \meta{integer array variable} at the (integer expression)
+%   \meta{position}.  While \cs{__intarray_gset:Nnn} checks that the
+%   \meta{position} is between $1$ and the \cs{__intarray_count:N} and that
+%   the \meta{value}'s absolute value is at most $2^{30}-1$, the
+%   \enquote{fast} function performs no such bound check.
+%   Assignments are always global.
+% \end{function}
+%
+% \begin{function}[EXP]{\__intarray_item:Nn, \__intarray_item_fast:Nn}
+%   \begin{syntax}
+%     \cs{__intarray_item:Nn} \meta{intarray~var} \Arg{position}
+%     \cs{__intarray_item_fast:Nn} \meta{intarray~var} \Arg{position}
+%   \end{syntax}
+%   Expands to the integer entry stored at the (integer expression)
+%   \meta{position} in the \meta{integer array variable}.  While
+%   \cs{__intarray_item:Nn} checks that the \meta{position} is between $1$
+%   and the \cs{__intarray_count:N}, the \enquote{fast} function performs
+%   no such bound check.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3intarray} implementation}
+%
+%    \begin{macrocode}
+%<*initex|package>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<@@=intarray>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ProvidesExplPackage{l3intarray}{2017/04/01}{}
+  {L3 Experimental low-level arrays of small integers}
+%    \end{macrocode}
+%
+% \subsection{Allocating arrays}
+%
+% \begin{variable}{\g_@@_font_int}
+%   Used to assign one font per array.
+%    \begin{macrocode}
+\int_new:N \g_@@_font_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[int]{\@@_new:Nn}
+%   Declare |#1| to be a font (arbitrarily |cmr10| at a never-used
+%   size).  Store the array's size as the \tn{hyphenchar} of that font
+%   and make sure enough \tn{fontdimen} are allocated, by setting the
+%   last one.  Then clear any \tn{fontdimen} that |cmr10| starts with.
+%   It seems \LuaTeX{}'s |cmr10| has an extra \tn{fontdimen} parameter
+%   number $8$ compared to other engines (for a math font we would
+%   replace $8$ by $22$ or some such).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_new:Nn #1#2
+  {
+    \__chk_if_free_cs:N #1
+    \int_gincr:N \g_@@_font_int
+    \tex_global:D \tex_font:D #1 = cmr10~at~ \g_@@_font_int sp \scan_stop:
+    \tex_hyphenchar:D #1 = \int_eval:n {#2} \scan_stop:
+    \int_compare:nNnT { \tex_hyphenchar:D #1 } > 0
+      { \tex_fontdimen:D \tex_hyphenchar:D #1 #1 = 0 sp \scan_stop: }
+    \int_step_inline:nnnn { 1 } { 1 } { 8 }
+      { \tex_fontdimen:D ##1 #1 = 0 sp \scan_stop: }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int, EXP]{\@@_count:N}
+%   Size of an array.
+%    \begin{macrocode}
+\cs_new:Npn \@@_count:N #1 { \tex_the:D \tex_hyphenchar:D #1 }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Array items}
+%
+% \begin{macro}[int]{\@@_gset:Nnn, \@@_gset_fast:Nnn}
+% \begin{macro}[aux]{\@@_gset_aux:Nnn}
+%   Set the appropriate \tn{fontdimen}.  The slow version checks the
+%   position and value are within bounds.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_gset_fast:Nnn #1#2#3
+  { \tex_fontdimen:D \int_eval:n {#2} #1 = \int_eval:n {#3} sp \scan_stop: }
+\cs_new_protected:Npn \@@_gset:Nnn #1#2#3
+  {
+    \exp_args:Nff \@@_gset_aux:Nnn #1
+      { \int_eval:n {#2} } { \int_eval:n {#3} }
+  }
+\cs_new_protected:Npn \@@_gset_aux:Nnn #1#2#3
+  {
+    \int_compare:nTF { 1 <= #2 <= \@@_count:N #1 }
+      {
+        \int_compare:nTF { - \c_max_dim <= \int_abs:n {#3} <= \c_max_dim }
+          { \@@_gset_fast:Nnn #1 {#2} {#3} }
+          {
+            \__msg_kernel_error:nnxxxx { intarray } { overflow }
+              { \token_to_str:N #1 } {#2} {#3}
+              { \int_compare:nNnT {#3} < 0 { - } \__int_value:w \c_max_dim }
+            \@@_gset_fast:Nnn #1 {#2}
+              { \int_compare:nNnT {#3} < 0 { - } \c_max_dim }
+          }
+      }
+      {
+        \__msg_kernel_error:nnxxx { intarray } { out-of-bounds }
+          { \token_to_str:N #1 } {#2} { \@@_count:N #1 }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_item:Nn, \@@_item_fast:Nn}
+% \begin{macro}[aux]{\@@_item_aux:Nn}
+%   Get the appropriate \tn{fontdimen} and perform bound checks if requested.
+%    \begin{macrocode}
+\cs_new:Npn \@@_item_fast:Nn #1#2
+  { \__int_value:w \tex_fontdimen:D \int_eval:n {#2} #1 }
+\cs_new:Npn \@@_item:Nn #1#2
+  { \exp_args:Nf \@@_item_aux:Nn #1 { \int_eval:n {#2} } }
+\cs_new:Npn \@@_item_aux:Nn #1#2
+  {
+    \int_compare:nTF { 1 <= #2 <= \@@_count:N #1 }
+      { \@@_item_fast:Nn #1 {#2} }
+      {
+        \__msg_kernel_expandable_error:nnnnn { intarray } { out-of-bounds }
+          { \token_to_str:N #1 } {#2} { \@@_count:N #1 }
+        0
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Messages}
+%
+%    \begin{macrocode}
+\__msg_kernel_new:nnnn { intarray } { overflow }
+  { Integers~larger~than~2^{30}-1~cannot~be~stored~in~arrays. }
+  {
+    An~attempt~was~made~to~store~#3~at~position~#2~in~the~array~'#1'.~
+    The~largest~allowed~value~#4~will~be~used~instead.
+  }
+\__msg_kernel_new:nnnn { intarray } { out-of-bounds }
+  { Access~to~an~entry~beyond~an~array's~bounds. }
+  {
+    An~attempt~was~made~to~access~or~store~data~at~position~#2~of~the~
+    array~'#1',~but~this~array~has~entries~at~positions~from~1~to~#3.
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</initex|package>
+%    \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex

Modified: trunk/l3experimental/l3str/l3regex.dtx
===================================================================
--- trunk/l3experimental/l3str/l3regex.dtx	2017-04-13 13:15:13 UTC (rev 7083)
+++ trunk/l3experimental/l3str/l3regex.dtx	2017-04-13 13:37:50 UTC (rev 7084)
@@ -731,7 +731,7 @@
 %<*package>
 \ProvidesExplPackage{l3regex}{2017/04/01}{}
   {L3 Experimental regular expressions}
-\RequirePackage{l3tl-build, l3tl-analysis, l3array}
+\RequirePackage{l3tl-build, l3tl-analysis, l3intarray}
 %</package>
 %    \end{macrocode}
 %
@@ -782,7 +782,7 @@
 %     unique id for all the steps of the matching algorithm.
 % \end{itemize}
 %
-% We use \pkg{l3array} to manipulate arrays of integers (stored into
+% We use \pkg{l3intarray} to manipulate arrays of integers (stored into
 % some dimension registers in scaled points).  We also abuse \TeX{}'s
 % \tn{toks} registers, by accessing them directly by number rather than
 % tying them to control sequence using the \tn{newtoks} allocation
@@ -792,25 +792,25 @@
 % \tn{toks}\meta{state} holds the tests and actions to perform in the
 % \meta{state} of the \textsc{nfa}.  When matching,
 % \begin{itemize}
-%   \item \cs{g_@@_state_active_array} holds the last \meta{step} in
+%   \item \cs{g_@@_state_active_intarray} holds the last \meta{step} in
 %     which each \meta{state} was active.
-%   \item \cs{g_@@_thread_state_array} maps each \meta{thread} (with
+%   \item \cs{g_@@_thread_state_intarray} maps each \meta{thread} (with
 %     $\texttt{min_active} \leq \meta{thread} < \texttt{max_active}$) to
 %     the \meta{state} in which the \meta{thread} currently is. The
 %     \meta{threads} or ordered starting from the best to the least
 %     preferred.
 %   \item \tn{toks}\meta{thread} holds the submatch information for the
 %     \meta{thread}, as the contents of a property list.
-%   \item \cs{g_@@_charcode_array} and \cs{g_@@_catcode_array} hold the
+%   \item \cs{g_@@_charcode_intarray} and \cs{g_@@_catcode_intarray} hold the
 %     character codes and category codes of tokens at each
 %     \meta{position} in the query.
-%   \item \cs{g_@@_balance_array} holds the balance of begin-group and
+%   \item \cs{g_@@_balance_intarray} holds the balance of begin-group and
 %     end-group character tokens which appear before that point in the
 %     token list.
 %   \item \tn{toks}\meta{position} holds \meta{tokens} which \texttt{o}-
 %     and \texttt{x}-expand to the \meta{position}-th token in the query.
-%   \item \cs{g_@@_submatch_prev_array}, \cs{g_@@_submatch_begin_array}
-%     and \cs{g_@@_submatch_end_array} hold, for each submatch (as would
+%   \item \cs{g_@@_submatch_prev_intarray}, \cs{g_@@_submatch_begin_intarray}
+%     and \cs{g_@@_submatch_end_intarray} hold, for each submatch (as would
 %     be extracted by \cs{regex_extract_all:nnN}), the place where the
 %     submatch started to be looked for and its two end-points.  For
 %     historical reasons, the minimum index is twice \texttt{max_state},
@@ -885,16 +885,16 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\g_@@_charcode_array, \g_@@_catcode_array, \g_@@_balance_array}
+% \begin{variable}{\g_@@_charcode_intarray, \g_@@_catcode_intarray, \g_@@_balance_intarray}
 %   The first thing we do when matching is to go once through the query
 %   token list and store the information for each token into
-%   \cs{g_@@_charcode_array}, \cs{g_@@_catcode_array} and \tn{toks}
+%   \cs{g_@@_charcode_intarray}, \cs{g_@@_catcode_intarray} and \tn{toks}
 %   registers.  We also store the balance of begin-group/end-group
-%   characters into \cs{g_@@_balance_array}.
+%   characters into \cs{g_@@_balance_intarray}.
 %    \begin{macrocode}
-\__array_new:Nn \g_@@_charcode_array { 65536 }
-\__array_new:Nn \g_@@_catcode_array { 65536 }
-\__array_new:Nn \g_@@_balance_array { 65536 }
+\__intarray_new:Nn \g_@@_charcode_intarray { 65536 }
+\__intarray_new:Nn \g_@@_catcode_intarray { 65536 }
+\__intarray_new:Nn \g_@@_balance_intarray { 65536 }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -4159,7 +4159,7 @@
 % transitions, the instruction at the new state of the \textsc{nfa} is
 % performed immediately.  When a transition consumes a character, the
 % new state is appended to a list of \enquote{active states}, stored in
-% \cs{g_@@_thread_state_array}: this thread will be active again when the next
+% \cs{g_@@_thread_state_intarray}: this thread will be active again when the next
 % token is read from the query.  At every step (for each token in the
 % query), we unpack that list of active states and the corresponding
 % submatch props, and empty those.
@@ -4271,13 +4271,13 @@
 % \begin{variable}{\l_@@_step_int}
 %   This integer, always even, is increased every time a character in
 %   the query is read, and not reset when doing multiple matches.  We
-%   store in \cs{g_@@_state_active_array} the last step in which each
+%   store in \cs{g_@@_state_active_intarray} the last step in which each
 %   \meta{state} in the \textsc{nfa} was encountered. This lets us break
 %   infinite loops by not visiting the same state twice in the same
 %   step. In fact, the step we store is equal to \texttt{step} when we
 %   have started performing the operations of \tn{toks}\meta{state}, but
 %   not finished yet. However, once we finish, we store
-%   $\text{\texttt{step}}+1$ in \cs{g_@@_state_active_array}.  This is
+%   $\text{\texttt{step}}+1$ in \cs{g_@@_state_active_intarray}.  This is
 %   needed to track submatches
 %   properly (see building phase). The \texttt{step} is also used to
 %   attach each set of submatch information to a given iteration (and
@@ -4289,7 +4289,7 @@
 %
 % \begin{variable}{\l_@@_min_active_int, \l_@@_max_active_int}
 %   All the currently active threads are kept in order of precedence in
-%   \cs{g_@@_thread_state_array}, and the corresponding submatches in the
+%   \cs{g_@@_thread_state_intarray}, and the corresponding submatches in the
 %   \tn{toks}. For our purposes, those serve as an array, indexed from
 %   \texttt{min_active} (inclusive) to \texttt{max_active} (excluded).
 %   At the start of every step, the whole array is unpacked, so that the
@@ -4301,14 +4301,14 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\g_@@_state_active_array, \g_@@_thread_state_array}
-%   \cs{g_@@_state_active_array} stores the last \meta{step} in which
-%   each \meta{state} was active.  \cs{g_@@_thread_state_array} stores
+% \begin{variable}{\g_@@_state_active_intarray, \g_@@_thread_state_intarray}
+%   \cs{g_@@_state_active_intarray} stores the last \meta{step} in which
+%   each \meta{state} was active.  \cs{g_@@_thread_state_intarray} stores
 %   threads that will be considered in the next step, more precisely the
 %   states in which these threads are.
 %    \begin{macrocode}
-\__array_new:Nn \g_@@_state_active_array { 65536 }
-\__array_new:Nn \g_@@_thread_state_array { 65536 }
+\__intarray_new:Nn \g_@@_state_active_intarray { 65536 }
+\__intarray_new:Nn \g_@@_thread_state_intarray { 65536 }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -4374,7 +4374,7 @@
 %   \cs{@@_query_set:nnn}). Then initialize the variables that should
 %   be set once for each user function (even for multiple
 %   matches). Namely, the overall matching is not yet successful; none of
-%   the states should be marked as visited (\cs{g_@@_state_active_array}), and
+%   the states should be marked as visited (\cs{g_@@_state_active_intarray}), and
 %   we start at step $0$; we pretend that there was a previous match
 %   ending at the start of the query, which was not empty (to avoid
 %   smothering an empty match at the start). Once all this is set up, we
@@ -4396,7 +4396,7 @@
     \bool_gset_false:N \g_@@_success_bool
     \int_step_inline:nnnn
       \l_@@_min_state_int { 1 } { \l_@@_max_state_int - 1 }
-      { \__array_gset_fast:Nnn \g_@@_state_active_array {##1} { 1 } }
+      { \__intarray_gset_fast:Nnn \g_@@_state_active_intarray {##1} { 1 } }
     \int_set_eq:NN \l_@@_min_active_int \l_@@_max_state_int
     \int_zero:N \l_@@_step_int
     \int_set_eq:NN \l_@@_success_pos_int \l_@@_min_pos_int
@@ -4512,7 +4512,7 @@
 \cs_new:Npn \@@_match_one_active:n #1
   {
     \@@_use_state_and_submatches:nn
-      { \__array_item_fast:Nn \g_@@_thread_state_array {#1} }
+      { \__intarray_item_fast:Nn \g_@@_thread_state_intarray {#1} }
       { \tex_the:D \tex_toks:D #1 }
   }
 %    \end{macrocode}
@@ -4528,11 +4528,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_query_set:nnn #1#2#3
   {
-    \__array_gset_fast:Nnn \g_@@_charcode_array
+    \__intarray_gset_fast:Nnn \g_@@_charcode_intarray
       { \l_@@_current_pos_int } {#3}
-    \__array_gset_fast:Nnn \g_@@_catcode_array
+    \__intarray_gset_fast:Nnn \g_@@_catcode_intarray
       { \l_@@_current_pos_int } {#2}
-    \__array_gset_fast:Nnn \g_@@_balance_array
+    \__intarray_gset_fast:Nnn \g_@@_balance_intarray
       { \l_@@_current_pos_int } { \l_@@_balance_int }
     \tex_toks:D \l_@@_current_pos_int {#1}
     \int_incr:N \l_@@_current_pos_int
@@ -4551,10 +4551,10 @@
 \cs_new_protected:Npn \@@_query_get:
   {
     \l_@@_current_char_int
-      = \__array_item_fast:Nn \g_@@_charcode_array
+      = \__intarray_item_fast:Nn \g_@@_charcode_intarray
           { \l_@@_current_pos_int } \scan_stop:
     \l_@@_current_catcode_int
-      = \__array_item_fast:Nn \g_@@_catcode_array
+      = \__intarray_item_fast:Nn \g_@@_catcode_intarray
           { \l_@@_current_pos_int } \scan_stop:
   }
 %    \end{macrocode}
@@ -4575,10 +4575,10 @@
 %<*trace>
     \trace:nnx { regex } { 2 } { state~\int_use:N \l_@@_current_state_int }
 %</trace>
-    \__array_gset_fast:Nnn \g_@@_state_active_array
+    \__intarray_gset_fast:Nnn \g_@@_state_active_intarray
       { \l_@@_current_state_int } { \l_@@_step_int }
     \tex_the:D \tex_toks:D \l_@@_current_state_int
-    \__array_gset_fast:Nnn \g_@@_state_active_array
+    \__intarray_gset_fast:Nnn \g_@@_state_active_intarray
       { \l_@@_current_state_int } { \l_@@_step_int + 1 }
   }
 %    \end{macrocode}
@@ -4594,7 +4594,7 @@
   {
     \int_set:Nn \l_@@_current_state_int {#1}
     \if_int_compare:w
-        \__array_item_fast:Nn \g_@@_state_active_array
+        \__intarray_item_fast:Nn \g_@@_state_active_intarray
           { \l_@@_current_state_int }
                       < \l_@@_step_int
       \tl_set:Nn \l_@@_current_submatches_prop {#2}
@@ -4651,7 +4651,7 @@
         \exp_not:n
           {
             \if_int_compare:w
-                \__array_item_fast:Nn \g_@@_state_active_array
+                \__intarray_item_fast:Nn \g_@@_state_active_intarray
                   { \l_@@_current_state_int }
                 #1
               \exp_after:wN \@@_use_state:
@@ -4683,14 +4683,14 @@
 %
 % \begin{macro}[int]{\@@_store_state:n}
 % \begin{macro}[aux]{\@@_store_submatches:}
-%   Put the given state in \cs{g_@@_thread_state_array}, and increment
+%   Put the given state in \cs{g_@@_thread_state_intarray}, and increment
 %   the length of the array. Also store the current submatch in the
 %   appropriate \tn{toks}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_store_state:n #1
   {
     \@@_store_submatches:
-    \__array_gset_fast:Nnn \g_@@_thread_state_array
+    \__intarray_gset_fast:Nnn \g_@@_thread_state_intarray
       { \l_@@_max_active_int } {#1}
     \int_incr:N \l_@@_max_active_int
   }
@@ -4781,7 +4781,7 @@
 %
 % \begin{macro}[aux, rEXP]{\@@_replacement_balance_one_match:n}
 %   This expects as an argument the first index of a set of entries in
-%   \cs{g_@@_submatch_begin_array} (and related arrays) which hold the
+%   \cs{g_@@_submatch_begin_intarray} (and related arrays) which hold the
 %   submatch information for a given match. It
 %   can be used within an integer expression to obtain the brace balance
 %   incurred by performing the replacement on that match. This combines
@@ -4811,8 +4811,8 @@
 \cs_new:Npn \@@_replacement_do_one_match:n #1
   {
     \@@_query_range:nn
-      { \__array_item_fast:Nn \g_@@_submatch_prev_array {#1} }
-      { \__array_item_fast:Nn \g_@@_submatch_begin_array {#1} }
+      { \__intarray_item_fast:Nn \g_@@_submatch_prev_intarray {#1} }
+      { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -4872,8 +4872,8 @@
 \cs_new:Npn \@@_query_submatch:n #1
   {
     \@@_query_range:nn
-      { \__array_item_fast:Nn \g_@@_submatch_begin_array {#1} }
-      { \__array_item_fast:Nn \g_@@_submatch_end_array {#1} }
+      { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} }
+      { \__intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -4891,19 +4891,19 @@
   {
     \__int_eval:w
       \int_compare:nNnTF
-        { \__array_item_fast:Nn \g_@@_submatch_end_array {#1} } = 0
+        { \__intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } = 0
         { 0 }
         {
-          \__array_item_fast:Nn \g_@@_balance_array
-            { \__array_item_fast:Nn \g_@@_submatch_end_array {#1} }
+          \__intarray_item_fast:Nn \g_@@_balance_intarray
+            { \__intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} }
         }
       -
       \int_compare:nNnTF
-        { \__array_item_fast:Nn \g_@@_submatch_begin_array {#1} } = 0
+        { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } = 0
         { 0 }
         {
-          \__array_item_fast:Nn \g_@@_balance_array
-            { \__array_item_fast:Nn \g_@@_submatch_begin_array {#1} }
+          \__intarray_item_fast:Nn \g_@@_balance_intarray
+            { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} }
         }
     \__int_eval_end:
   }
@@ -4961,8 +4961,8 @@
     \cs_set:Npn \@@_replacement_do_one_match:n ##1
       {
         \@@_query_range:nn
-          { \__array_item_fast:Nn \g_@@_submatch_prev_array {##1} }
-          { \__array_item_fast:Nn \g_@@_submatch_begin_array {##1} }
+          { \__intarray_item_fast:Nn \g_@@_submatch_prev_intarray {##1} }
+          { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {##1} }
         #1
       }
   }
@@ -5489,7 +5489,7 @@
 %   with a $0$-th submatch (the full match), and one match for each
 %   capturing group: submatches corresponding to the last successful
 %   match are labelled starting at \texttt{zeroth_submatch}. The entry
-%   \cs{l_@@_zeroth_submatch_int} in \cs{g_@@_submatch_prev_array} holds
+%   \cs{l_@@_zeroth_submatch_int} in \cs{g_@@_submatch_prev_intarray} holds
 %   the position at which that match attempt started: this is used for
 %   splitting and replacements.
 %    \begin{macrocode}
@@ -5499,12 +5499,12 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\g_@@_submatch_prev_array, \g_@@_submatch_begin_array, \g_@@_submatch_end_array}
+% \begin{variable}{\g_@@_submatch_prev_intarray, \g_@@_submatch_begin_intarray, \g_@@_submatch_end_intarray}
 %   Hold the place where the match attempt begun and the end-points of each submatch.
 %    \begin{macrocode}
-\__array_new:Nn \g_@@_submatch_prev_array { 65536 }
-\__array_new:Nn \g_@@_submatch_begin_array { 65536 }
-\__array_new:Nn \g_@@_submatch_end_array { 65536 }
+\__intarray_new:Nn \g_@@_submatch_prev_intarray { 65536 }
+\__intarray_new:Nn \g_@@_submatch_begin_intarray { 65536 }
+\__intarray_new:Nn \g_@@_submatch_end_intarray { 65536 }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -5610,15 +5610,15 @@
         {
           \if_int_compare:w \l_@@_start_pos_int < \l_@@_success_pos_int
             \@@_extract:
-            \__array_gset_fast:Nnn \g_@@_submatch_prev_array
+            \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray
               { \l_@@_zeroth_submatch_int } { 0 }
-            \__array_gset_fast:Nnn \g_@@_submatch_end_array
+            \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray
               { \l_@@_zeroth_submatch_int }
               {
-                \__array_item_fast:Nn \g_@@_submatch_begin_array
+                \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray
                   { \l_@@_zeroth_submatch_int }
               }
-            \__array_gset_fast:Nnn \g_@@_submatch_begin_array
+            \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray
               { \l_@@_zeroth_submatch_int }
               { \l_@@_start_pos_int }
           \fi:
@@ -5626,12 +5626,12 @@
       #1
       \@@_match:n {#2}
 %<assert>\assert_int:n { \l_@@_current_pos_int = \l_@@_max_pos_int }
-      \__array_gset_fast:Nnn \g_@@_submatch_prev_array
+      \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray
         { \l_@@_submatch_int } { 0 }
-      \__array_gset_fast:Nnn \g_@@_submatch_end_array
+      \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray
         { \l_@@_submatch_int }
         { \l_@@_max_pos_int }
-      \__array_gset_fast:Nnn \g_@@_submatch_begin_array
+      \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray
         { \l_@@_submatch_int }
         { \l_@@_start_pos_int }
       \int_incr:N \l_@@_submatch_int
@@ -5727,7 +5727,7 @@
 %   is somewhat a hack: the \meta{key} is a non-negative integer
 %   followed by |<| or |>|, which we use in a comparison to $-1$. At the
 %   end, store the information about the position at which the match
-%   attempt started, in \cs{g_@@_submatch_prev_array}.
+%   attempt started, in \cs{g_@@_submatch_prev_intarray}.
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_extract:
   {
@@ -5735,11 +5735,11 @@
       \int_set_eq:NN \l_@@_zeroth_submatch_int \l_@@_submatch_int
       \prg_replicate:nn \l_@@_capturing_group_int
         {
-          \__array_gset_fast:Nnn \g_@@_submatch_begin_array
+          \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray
             { \l_@@_submatch_int } { 0 }
-          \__array_gset_fast:Nnn \g_@@_submatch_end_array
+          \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray
             { \l_@@_submatch_int } { 0 }
-          \__array_gset_fast:Nnn \g_@@_submatch_prev_array
+          \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray
             { \l_@@_submatch_int } { 0 }
           \int_incr:N \l_@@_submatch_int
         }
@@ -5752,14 +5752,14 @@
           \fi:
           \__int_eval:w \l_@@_zeroth_submatch_int + ##1 {##2}
         }
-      \__array_gset_fast:Nnn \g_@@_submatch_prev_array
+      \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray
         { \l_@@_zeroth_submatch_int } { \l_@@_start_pos_int }
     \fi:
   }
 \cs_new_protected:Npn \@@_extract_b:wn #1 < #2
-  { \__array_gset_fast:Nnn \g_@@_submatch_begin_array {#1} {#2} }
+  { \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray {#1} {#2} }
 \cs_new_protected:Npn \@@_extract_e:wn #1 > #2
-  { \__array_gset_fast:Nnn \g_@@_submatch_end_array {#1} {#2} }
+  { \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray {#1} {#2} }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -5800,7 +5800,7 @@
             \@@_replacement_do_one_match:n { \l_@@_zeroth_submatch_int }
             \@@_query_range:nn
               {
-                \__array_item_fast:Nn \g_@@_submatch_end_array
+                \__intarray_item_fast:Nn \g_@@_submatch_end_intarray
                   { \l_@@_zeroth_submatch_int }
               }
               { \l_@@_max_pos_int }

Modified: trunk/l3experimental/l3str/l3str.ins
===================================================================
--- trunk/l3experimental/l3str/l3str.ins	2017-04-13 13:15:13 UTC (rev 7083)
+++ trunk/l3experimental/l3str/l3str.ins	2017-04-13 13:37:50 UTC (rev 7084)
@@ -57,7 +57,7 @@
 \generate{\file{l3tl-analysis.sty}  {\from{l3tl-analysis.dtx}  {package}}}
 \generate{\file{l3tl-build.sty}     {\from{l3tl-build.dtx}     {package}}}
 \generate{\file{l3regex-trace.sty}  {\from{l3regex.dtx}  {package,trace}}}
-\generate{\file{l3array.sty}        {\from{l3array.dtx}        {package}}}
+\generate{\file{l3intarray.sty}     {\from{l3intarray.dtx}     {package}}}
 
 % Escapings.
 \generate{%

Deleted: trunk/l3experimental/l3str/testfiles/m3array001.luatex.tlg
===================================================================
--- trunk/l3experimental/l3str/testfiles/m3array001.luatex.tlg	2017-04-13 13:15:13 UTC (rev 7083)
+++ trunk/l3experimental/l3str/testfiles/m3array001.luatex.tlg	2017-04-13 13:37:50 UTC (rev 7084)
@@ -1,145 +0,0 @@
-This is a generated file for the LaTeX (2e + expl3) validation system.
-Don't change this file in any respect.
-Author: Bruno Le Floch
-============================================================
-TEST 1: Safe array operations
-============================================================
-Defining \l_tmpa_array on line ...
-123
--10
--200
-0
-12345
-============================================================
-============================================================
-TEST 2: Safe array operations with errors
-============================================================
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "kernel/command-already-defined"
-! 
-! Control sequence \l_tmpa_array already defined.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| This is a coding error.
-| 
-| LaTeX has been asked to create a new control sequence '\l_tmpa_array' but
-| this name has already been used elsewhere.
-| 
-| The current meaning is:
-|   select font cmr10 at 0.00002pt
-|...............................................
-Defining \l_tmpa_array on line ...
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "array/out-of-bounds"
-! 
-! Access to an entry beyond an array's bounds.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| An attempt was made to access or store data at position 0 of the array
-| '\l_tmpa_array', but this array has entries at positions from 1 to 12.
-|...............................................
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "array/overflow"
-! 
-! Integers larger than 2^{30}-1 cannot be stored in arrays.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| An attempt was made to store -2000000000 at position 1 in the array
-| '\l_tmpa_array'. The largest allowed value -1073741823 will be used instead.
-|...............................................
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "array/out-of-bounds"
-! 
-! Access to an entry beyond an array's bounds.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| An attempt was made to access or store data at position 13 of the array
-| '\l_tmpa_array', but this array has entries at positions from 1 to 12.
-|...............................................
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
-                Access to an entry beyond an array's bounds.
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-0
--1073741823
-0
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
-                Access to an entry beyond an array's bounds.
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-0
-============================================================
-============================================================
-TEST 3: Unsafe array operations with errors
-============================================================
-Defining \l_tmpb_array on line ...
-! Font \l_tmpb_array has only 15 fontdimen parameters.
-<recently read> \l_tmpb_array 
-l. ...  }
-To increase the number of font parameters, you must
-use \fontdimen immediately after the \font is loaded.
-! Dimension too large.
-<to be read again> 
-\scan_stop: 
-l. ...  }
-I can't work with sizes bigger than about 19 feet.
-Continue and I'll use the largest value I can.
-! Dimension too large.
-<to be read again> 
-\scan_stop: 
-l. ...  }
-I can't work with sizes bigger than about 19 feet.
-Continue and I'll use the largest value I can.
-! Font \l_tmpb_array has only 16 fontdimen parameters.
-<recently read> \l_tmpb_array 
-l. ...  }
-To increase the number of font parameters, you must
-use \fontdimen immediately after the \font is loaded.
-0
--1073741823
-0
-123456
-0
-1234567
-Defining \l_tmpc_array on line ...
-12345678
-============================================================
-============================================================
-TEST 4: Any stray non-zero?
-============================================================
-Defining \l_tmpd_array on line ...
-============================================================

Deleted: trunk/l3experimental/l3str/testfiles/m3array001.lvt
===================================================================
--- trunk/l3experimental/l3str/testfiles/m3array001.lvt	2017-04-13 13:15:13 UTC (rev 7083)
+++ trunk/l3experimental/l3str/testfiles/m3array001.lvt	2017-04-13 13:37:50 UTC (rev 7084)
@@ -1,78 +0,0 @@
-%
-% Copyright (C) 2017 LaTeX3 Project
-%
-
-\documentclass{minimal}
-\input{regression-test}
-\RequirePackage[log-functions, check-declarations]{expl3}
-\RequirePackage{l3array}
-
-\begin{document}
-
-\START
-\AUTHOR{Bruno Le Floch}
-\ExplSyntaxOn
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\TEST { Safe~array~operations }
-  {
-    \__array_new:Nn \l_tmpa_array { 123 }
-    \group_begin:
-    \__array_gset:Nnn \l_tmpa_array { 1 } { 100 }
-    \__array_gset:Nnn \l_tmpa_array { 2 } { -200 }
-    \__array_gset:Nnn \l_tmpa_array { 1 } { -10 }
-    \__array_gset:Nnn \l_tmpa_array { 123 } { 12345 }
-    \group_end:
-    \TYPE { \__array_count:N \l_tmpa_array }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 1 } }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 2 } }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 53 } }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 123 } }
-  }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\TEST { Safe~array~operations~with~errors }
-  {
-    \__array_new:Nn \l_tmpa_array { 12 }
-    \group_begin:
-    \__array_gset:Nnn \l_tmpa_array { 0 } { 2000000000 }
-    \__array_gset:Nnn \l_tmpa_array { 1 } { -2000000000 }
-    \__array_gset:Nnn \l_tmpa_array { 13 } { -2000000000 }
-    \group_end:
-    \TYPE { \__array_item:Nn \l_tmpa_array { 0 } }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 1 } }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 12 } }
-    \TYPE { \__array_item:Nn \l_tmpa_array { 13 } }
-  }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\TEST { Unsafe~array~operations~with~errors }
-  {
-    \__array_new:Nn \l_tmpb_array { 15 }
-    \group_begin:
-    \__array_gset_fast:Nnn \l_tmpb_array { 0 } { 2000000000 }
-    \__array_gset_fast:Nnn \l_tmpb_array { 1 } { -2000000000 }
-    \__array_gset_fast:Nnn \l_tmpb_array { 16 } { 123456 }
-    \group_end:
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 0 } }
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 1 } }
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 15 } }
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 16 } }
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 17 } }
-    \__array_gset_fast:Nnn \l_tmpb_array { 17 } { 1234567 }
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 17 } }
-    \__array_new:Nn \l_tmpc_array { -1 }
-    \__array_gset_fast:Nnn \l_tmpb_array { 18 } { 12345678 }
-    \TYPE { \__array_item_fast:Nn \l_tmpb_array { 18 } }
-  }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\int_gadd:Nn \g__array_font_int { 100000 } % to make sure nothing is suppressed accidentally by scaling the font.
-\TEST { Any~stray~non-zero? }
-  {
-    \__array_new:Nn \l_tmpd_array { 25 }
-    \int_step_inline:nnnn { 1 } { 1 } { \__array_count:N \l_tmpd_array }
-      { \int_compare:nNnF { \__array_item:Nn \l_tmpd_array {#1} } = 0 { \TYPE {#1} } }
-  }
-
-\END

Deleted: trunk/l3experimental/l3str/testfiles/m3array001.tlg
===================================================================
--- trunk/l3experimental/l3str/testfiles/m3array001.tlg	2017-04-13 13:15:13 UTC (rev 7083)
+++ trunk/l3experimental/l3str/testfiles/m3array001.tlg	2017-04-13 13:37:50 UTC (rev 7084)
@@ -1,155 +0,0 @@
-This is a generated file for the LaTeX (2e + expl3) validation system.
-Don't change this file in any respect.
-Author: Bruno Le Floch
-============================================================
-TEST 1: Safe array operations
-============================================================
-Defining \l_tmpa_array on line ...
-123
--10
--200
-0
-12345
-============================================================
-============================================================
-TEST 2: Safe array operations with errors
-============================================================
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "kernel/command-already-defined"
-! 
-! Control sequence \l_tmpa_array already defined.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| This is a coding error.
-| 
-| LaTeX has been asked to create a new control sequence '\l_tmpa_array' but
-| this name has already been used elsewhere.
-| 
-| The current meaning is:
-|   select font cmr10 at 0.00002pt
-|...............................................
-Defining \l_tmpa_array on line ...
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "array/out-of-bounds"
-! 
-! Access to an entry beyond an array's bounds.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| An attempt was made to access or store data at position 0 of the array
-| '\l_tmpa_array', but this array has entries at positions from 1 to 12.
-|...............................................
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "array/overflow"
-! 
-! Integers larger than 2^{30}-1 cannot be stored in arrays.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| An attempt was made to store -2000000000 at position 1 in the array
-| '\l_tmpa_array'. The largest allowed value -1073741823 will be used instead.
-|...............................................
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!
-! LaTeX error: "array/out-of-bounds"
-! 
-! Access to an entry beyond an array's bounds.
-! 
-! See the LaTeX3 documentation for further information.
-! 
-! For immediate help type H <return>.
-!...............................................  
-l. ...  }
-|'''''''''''''''''''''''''''''''''''''''''''''''
-| An attempt was made to access or store data at position 13 of the array
-| '\l_tmpa_array', but this array has entries at positions from 1 to 12.
-|...............................................
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
-                           Access to an entry beyond an array's bounds.
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-0
--1073741823
-0
-! Undefined control sequence.
-<argument> \LaTeX3 error: 
-                           Access to an entry beyond an array's bounds.
-l. ...  }
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-0
-============================================================
-============================================================
-TEST 3: Unsafe array operations with errors
-============================================================
-Defining \l_tmpb_array on line ...
-! Font \l_tmpb_array has only 15 fontdimen parameters.
-<recently read> \l_tmpb_array 
-l. ...  }
-To increase the number of font parameters, you must
-use \fontdimen immediately after the \font is loaded.
-! Dimension too large.
-<to be read again> 
-                   \scan_stop: 
-l. ...  }
-I can't work with sizes bigger than about 19 feet.
-Continue and I'll use the largest value I can.
-! Dimension too large.
-<to be read again> 
-                   \scan_stop: 
-l. ...  }
-I can't work with sizes bigger than about 19 feet.
-Continue and I'll use the largest value I can.
-! Font \l_tmpb_array has only 16 fontdimen parameters.
-<recently read> \l_tmpb_array 
-l. ...  }
-To increase the number of font parameters, you must
-use \fontdimen immediately after the \font is loaded.
-0
--1073741823
-0
-123456
-0
-1234567
-Defining \l_tmpc_array on line ...
-! Font \l_tmpb_array has only 17 fontdimen parameters.
-<recently read> \l_tmpb_array 
-l. ...  }
-To increase the number of font parameters, you must
-use \fontdimen immediately after the \font is loaded.
-! Font \l_tmpb_array has only 17 fontdimen parameters.
-<recently read> \l_tmpb_array 
-l. ...  }
-To increase the number of font parameters, you must
-use \fontdimen immediately after the \font is loaded.
-0
-============================================================
-============================================================
-TEST 4: Any stray non-zero?
-============================================================
-Defining \l_tmpd_array on line ...
-============================================================

Copied: trunk/l3experimental/l3str/testfiles/m3intarray001.luatex.tlg (from rev 7082, trunk/l3experimental/l3str/testfiles/m3array001.luatex.tlg)
===================================================================
--- trunk/l3experimental/l3str/testfiles/m3intarray001.luatex.tlg	                        (rev 0)
+++ trunk/l3experimental/l3str/testfiles/m3intarray001.luatex.tlg	2017-04-13 13:37:50 UTC (rev 7084)
@@ -0,0 +1,146 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Bruno Le Floch
+============================================================
+TEST 1: Safe array operations
+============================================================
+Defining \l_tmpa_intarray on line ...
+123
+-10
+-200
+0
+12345
+============================================================
+============================================================
+TEST 2: Safe array operations with errors
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/command-already-defined"
+! 
+! Control sequence \l_tmpa_intarray already defined.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| LaTeX has been asked to create a new control sequence '\l_tmpa_intarray' but
+| this name has already been used elsewhere.
+| 
+| The current meaning is:
+|   select font cmr10 at 0.00002pt
+|...............................................
+Defining \l_tmpa_intarray on line ...
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "intarray/out-of-bounds"
+! 
+! Access to an entry beyond an array's bounds.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| An attempt was made to access or store data at position 0 of the array
+| '\l_tmpa_intarray', but this array has entries at positions from 1 to 12.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "intarray/overflow"
+! 
+! Integers larger than 2^{30}-1 cannot be stored in arrays.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| An attempt was made to store -2000000000 at position 1 in the array
+| '\l_tmpa_intarray'. The largest allowed value -1073741823 will be used
+| instead.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "intarray/out-of-bounds"
+! 
+! Access to an entry beyond an array's bounds.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| An attempt was made to access or store data at position 13 of the array
+| '\l_tmpa_intarray', but this array has entries at positions from 1 to 12.
+|...............................................
+! Undefined control sequence.
+<argument> \LaTeX3 error: 
+                Access to an entry beyond an array's bounds.
+l. ...  }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+0
+-1073741823
+0
+! Undefined control sequence.
+<argument> \LaTeX3 error: 
+                Access to an entry beyond an array's bounds.
+l. ...  }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+0
+============================================================
+============================================================
+TEST 3: Unsafe array operations with errors
+============================================================
+Defining \l_tmpb_intarray on line ...
+! Font \l_tmpb_intarray has only 15 fontdimen parameters.
+<recently read> \l_tmpb_intarray 
+l. ...  }
+To increase the number of font parameters, you must
+use \fontdimen immediately after the \font is loaded.
+! Dimension too large.
+<to be read again> 
+\scan_stop: 
+l. ...  }
+I can't work with sizes bigger than about 19 feet.
+Continue and I'll use the largest value I can.
+! Dimension too large.
+<to be read again> 
+\scan_stop: 
+l. ...  }
+I can't work with sizes bigger than about 19 feet.
+Continue and I'll use the largest value I can.
+! Font \l_tmpb_intarray has only 16 fontdimen parameters.
+<recently read> \l_tmpb_intarray 
+l. ...  }
+To increase the number of font parameters, you must
+use \fontdimen immediately after the \font is loaded.
+0
+-1073741823
+0
+123456
+0
+1234567
+Defining \l_tmpc_intarray on line ...
+12345678
+============================================================
+============================================================
+TEST 4: Any stray non-zero?
+============================================================
+Defining \l_tmpd_intarray on line ...
+============================================================

Copied: trunk/l3experimental/l3str/testfiles/m3intarray001.lvt (from rev 7082, trunk/l3experimental/l3str/testfiles/m3array001.lvt)
===================================================================
--- trunk/l3experimental/l3str/testfiles/m3intarray001.lvt	                        (rev 0)
+++ trunk/l3experimental/l3str/testfiles/m3intarray001.lvt	2017-04-13 13:37:50 UTC (rev 7084)
@@ -0,0 +1,78 @@
+%
+% Copyright (C) 2017 LaTeX3 Project
+%
+
+\documentclass{minimal}
+\input{regression-test}
+\RequirePackage[log-functions, check-declarations]{expl3}
+\RequirePackage{l3intarray}
+
+\begin{document}
+
+\START
+\AUTHOR{Bruno Le Floch}
+\ExplSyntaxOn
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TEST { Safe~array~operations }
+  {
+    \__intarray_new:Nn \l_tmpa_intarray { 123 }
+    \group_begin:
+    \__intarray_gset:Nnn \l_tmpa_intarray { 1 } { 100 }
+    \__intarray_gset:Nnn \l_tmpa_intarray { 2 } { -200 }
+    \__intarray_gset:Nnn \l_tmpa_intarray { 1 } { -10 }
+    \__intarray_gset:Nnn \l_tmpa_intarray { 123 } { 12345 }
+    \group_end:
+    \TYPE { \__intarray_count:N \l_tmpa_intarray }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 1 } }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 2 } }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 53 } }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 123 } }
+  }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TEST { Safe~array~operations~with~errors }
+  {
+    \__intarray_new:Nn \l_tmpa_intarray { 12 }
+    \group_begin:
+    \__intarray_gset:Nnn \l_tmpa_intarray { 0 } { 2000000000 }
+    \__intarray_gset:Nnn \l_tmpa_intarray { 1 } { -2000000000 }
+    \__intarray_gset:Nnn \l_tmpa_intarray { 13 } { -2000000000 }
+    \group_end:
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 0 } }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 1 } }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 12 } }
+    \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 13 } }
+  }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\TEST { Unsafe~array~operations~with~errors }
+  {
+    \__intarray_new:Nn \l_tmpb_intarray { 15 }
+    \group_begin:
+    \__intarray_gset_fast:Nnn \l_tmpb_intarray { 0 } { 2000000000 }
+    \__intarray_gset_fast:Nnn \l_tmpb_intarray { 1 } { -2000000000 }
+    \__intarray_gset_fast:Nnn \l_tmpb_intarray { 16 } { 123456 }
+    \group_end:
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 0 } }
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 1 } }
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 15 } }
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 16 } }
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 17 } }
+    \__intarray_gset_fast:Nnn \l_tmpb_intarray { 17 } { 1234567 }
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 17 } }
+    \__intarray_new:Nn \l_tmpc_intarray { -1 }
+    \__intarray_gset_fast:Nnn \l_tmpb_intarray { 18 } { 12345678 }
+    \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 18 } }
+  }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\int_gadd:Nn \g__intarray_font_int { 100000 } % to make sure nothing is suppressed accidentally by scaling the font.
+\TEST { Any~stray~non-zero? }
+  {
+    \__intarray_new:Nn \l_tmpd_intarray { 25 }
+    \int_step_inline:nnnn { 1 } { 1 } { \__intarray_count:N \l_tmpd_intarray }
+      { \int_compare:nNnF { \__intarray_item:Nn \l_tmpd_intarray {#1} } = 0 { \TYPE {#1} } }
+  }
+
+\END

Copied: trunk/l3experimental/l3str/testfiles/m3intarray001.tlg (from rev 7082, trunk/l3experimental/l3str/testfiles/m3array001.tlg)
===================================================================
--- trunk/l3experimental/l3str/testfiles/m3intarray001.tlg	                        (rev 0)
+++ trunk/l3experimental/l3str/testfiles/m3intarray001.tlg	2017-04-13 13:37:50 UTC (rev 7084)
@@ -0,0 +1,156 @@
+This is a generated file for the LaTeX (2e + expl3) validation system.
+Don't change this file in any respect.
+Author: Bruno Le Floch
+============================================================
+TEST 1: Safe array operations
+============================================================
+Defining \l_tmpa_intarray on line ...
+123
+-10
+-200
+0
+12345
+============================================================
+============================================================
+TEST 2: Safe array operations with errors
+============================================================
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "kernel/command-already-defined"
+! 
+! Control sequence \l_tmpa_intarray already defined.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| This is a coding error.
+| 
+| LaTeX has been asked to create a new control sequence '\l_tmpa_intarray' but
+| this name has already been used elsewhere.
+| 
+| The current meaning is:
+|   select font cmr10 at 0.00002pt
+|...............................................
+Defining \l_tmpa_intarray on line ...
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "intarray/out-of-bounds"
+! 
+! Access to an entry beyond an array's bounds.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| An attempt was made to access or store data at position 0 of the array
+| '\l_tmpa_intarray', but this array has entries at positions from 1 to 12.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "intarray/overflow"
+! 
+! Integers larger than 2^{30}-1 cannot be stored in arrays.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| An attempt was made to store -2000000000 at position 1 in the array
+| '\l_tmpa_intarray'. The largest allowed value -1073741823 will be used
+| instead.
+|...............................................
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+! LaTeX error: "intarray/out-of-bounds"
+! 
+! Access to an entry beyond an array's bounds.
+! 
+! See the LaTeX3 documentation for further information.
+! 
+! For immediate help type H <return>.
+!...............................................  
+l. ...  }
+|'''''''''''''''''''''''''''''''''''''''''''''''
+| An attempt was made to access or store data at position 13 of the array
+| '\l_tmpa_intarray', but this array has entries at positions from 1 to 12.
+|...............................................
+! Undefined control sequence.
+<argument> \LaTeX3 error: 
+                           Access to an entry beyond an array's bounds.
+l. ...  }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+0
+-1073741823
+0
+! Undefined control sequence.
+<argument> \LaTeX3 error: 
+                           Access to an entry beyond an array's bounds.
+l. ...  }
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+0
+============================================================
+============================================================
+TEST 3: Unsafe array operations with errors
+============================================================
+Defining \l_tmpb_intarray on line ...
+! Font \l_tmpb_intarray has only 15 fontdimen parameters.
+<recently read> \l_tmpb_intarray 
+l. ...  }
+To increase the number of font parameters, you must
+use \fontdimen immediately after the \font is loaded.
+! Dimension too large.
+<to be read again> 
+                   \scan_stop: 
+l. ...  }
+I can't work with sizes bigger than about 19 feet.
+Continue and I'll use the largest value I can.
+! Dimension too large.
+<to be read again> 
+                   \scan_stop: 
+l. ...  }
+I can't work with sizes bigger than about 19 feet.
+Continue and I'll use the largest value I can.
+! Font \l_tmpb_intarray has only 16 fontdimen parameters.
+<recently read> \l_tmpb_intarray 
+l. ...  }
+To increase the number of font parameters, you must
+use \fontdimen immediately after the \font is loaded.
+0
+-1073741823
+0
+123456
+0
+1234567
+Defining \l_tmpc_intarray on line ...
+! Font \l_tmpb_intarray has only 17 fontdimen parameters.
+<recently read> \l_tmpb_intarray 
+l. ...  }
+To increase the number of font parameters, you must
+use \fontdimen immediately after the \font is loaded.
+! Font \l_tmpb_intarray has only 17 fontdimen parameters.
+<recently read> \l_tmpb_intarray 
+l. ...  }
+To increase the number of font parameters, you must
+use \fontdimen immediately after the \font is loaded.
+0
+============================================================
+============================================================
+TEST 4: Any stray non-zero?
+============================================================
+Defining \l_tmpd_intarray on line ...
+============================================================



More information about the latex3-commits mailing list