The ignore and ignorable declarations
refer to for-value references
to variable bindings for the vars
and to function bindings for the fns.
An ignore declaration specifies that
for-value references to the indicated bindings
will not
occur within the scope of the declaration.
Within the scope of such a declaration,
it is desirable
for a compiler to issue a warning about
the presence of
either a for-value reference to any var or fn,
or a special declaration for any var.
An ignorable declaration specifies that
for-value references to the indicated bindings
might or might not
occur within the scope of the declaration.
Within the scope of such a declaration,
it is not desirable
for a compiler to issue a warning about
the presence or absence of
either a for-value reference to any var or fn,
or a special declaration for any var.
When not within the scope
of a ignore or ignorable declaration,
it is desirable
for a compiler to issue a warning about
any var for which there is
neither a for-value reference
nor a special declaration,
or about
any fn for which there is
no for-value reference.
Any warning about a "used" or "unused" binding must be of type style-warning,
and may not affect program semantics.
The stream variables established by
with-open-file,
with-open-stream,
with-input-from-string,
and with-output-to-string,
and all iteration variables are, by definition, always "used".
Using (declare (ignore v)),
for such a variable v has unspecified consequences.