Skip to content

defconstant does not check for invalid redefinitions

[this is not a regression, same behavior is present in 16.1.3]

(defconstant +foo+ 42)
(defconstant +foo+ 13)

This should signal an error, that +foo+ is being redefined from 42 to 13. In both bytecmp and ccmp redefinition succeeds (same happens when we compile-file files with such redefinitions).

Also note, that assigning a constant leads to an error (correct behavior):

In form
(SETF +FOO+ 42)
SETQ: Tried to assign a value to the constant +FOO+.
   [Condition of type SI:SIMPLE-PROGRAM-ERROR]
Edited by Daniel Kochmański