Declaration ignore, ignorable

Syntax:

(ignore {var | (function fn)}*)

(ignorable {var | (function fn)}*)

Arguments:

var—a variable name.

fn—a function name.

Valid Context:

declaration Removed per X3J13 -kmp 4-Oct-93 or \term{proclamation}

Binding Types Affected:

variable, function

Description:

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.

!!! Maybe separate out to a concept section? !!! Once these functions are described as using stream vars, we can maybe remove this enumeration. Alternatively, we could make a table and put it in the chapter of "general rules".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.

added. I interpolated the bit about ignorable, since this was not covered in the original proposal. --sjl 4 Mar 92 \issue{MACRO-DECLARATIONS:MAKE-EXPLICIT} \declref{ignore} and \declref{ignorable} declarations may apply to \term{symbol macros}. Such a declaration specifies that the named \term{symbol macro} must not (in the case of \declref{ignore}) or may not (in the case of \declref{ignorable}) be referenced within the scope of the declaration. \endissue{MACRO-DECLARATIONS:MAKE-EXPLICIT}

See Also:

declare Removed per X3J13. -kmp 4-Oct-93 , \macref{declaim}, \funref{proclaim}