VerifyError with symbol metadata, macros, and defrecord
Description
The code below defines a macro wrapper around defrecord. Using it causes a VerifyError:
Once this happens, the running Clojure process is oddly damaged. Changing the macro to a working version (see below) will not make the sample work with the tagged symbol, almost as if the symbol 'one (below) became corrupt. You either need to start a new REPL, or try to invoke the macro with a different tagged symbol.
The following code does work (note the forced conversion to a string):
Environment
Affects Clojure from 1.2.0 to 1.3.0-alpha4
Activity
Show:
import December 18, 2010 at 7:02 PM
Comment made by: vetoshev
Thanks for the fix! Works great.
Stuart Halloway December 17, 2010 at 7:53 PM
Very confusing. Reproduced everything in the report. Moreover, leaving out the call to keyword is enough to avoid the problem. The following variant works fine:
The code below defines a macro wrapper around defrecord. Using it causes a VerifyError:
Once this happens, the running Clojure process is oddly damaged. Changing the macro to a working version (see below) will not make the sample work with the tagged symbol, almost as if the symbol
'one (below) became corrupt. You either need to start a new REPL, or try to invoke the macro with a different tagged symbol.
The following code does work (note the forced conversion to a string):