# expl3 with check-declarations turned on fails to compile if siunitx is loaded

In my work with LaTeX3 I like to turn on check-declararations as it identifies variables I forgot to declare. However, siunitx complains, which causes a problem, I cannot do without siunitx!

\documentclass{minimal}
\usepackage[check-declarations]{expl3}
\usepackage{siunitx}
\begin{document}
Either I am using package expl3 inappropriately, or it's Hi Joseph!
\end{document}

• As noted in answers, the check-declarations option is really there for code development. I will fix these two missing items in the next update. – Joseph Wright Aug 14 '16 at 9:40
• Any context (link to an inside joke on meta...?) on how is a "Hi developer!" an euphemism for a bug/feature? – Matsmath Aug 14 '16 at 10:01
• @matsmath ... goes straight over my head. I steer clear of 'meta', always. As an alternative to me having used expl3 incorrectly 'Hi Joseph' was simply an invitation for the developer to roll up his sleeves, which he promptly did! – Reinhard Neuwirth Aug 14 '16 at 13:02

## 2 Answers

Well, either disable the check again or add the two missing variables manually:

\documentclass{article}
\usepackage[check-declarations]{expl3}
\ExplSyntaxOn
\bool_new:N \l__siunitx_per_two_parts_bool
\bool_new:N \l__siunitx_product_repeat_bool
\ExplSyntaxOff
\usepackage{siunitx}
\begin{document}
Either I am using package expl3 inappropriately, or it's Hi Joseph!
\end{document}


The check is meant really for testing purposes only.

It's “Hi, Joseph!”

The first error is due a typo in siunitx.sty. At line 4584 (release 2.6q dated 2016/03/01) the package has

\bool_new:N \l__siunitx_two_parts_bool


instead of

\bool_new:N \l__siunitx_per_two_parts_bool


The variable \l__siunitx_product_repeat_bool is indeed undeclared.