[lift-devel] Compilation of macros.lisp fails in Allegro CL 9.0

Gary King gwking at metabang.com
Fri Aug 31 20:30:19 UTC 2012


Hi David,

> For what it's worth, it looks like the compile error is coming from the
> 
>   (defmacro defcondition (...) ...)
> 

It's actually the use of the newlinify macro in defcondition. The newlinify code is incorrect in that it causes a copy of the current environment to be externalized on use. It's my understanding that the environment is very implementation dependent and so there is no expectation that you should be able to do this. Also, there is no need since doing so is quite inefficient. A better version of newlinify would be


(defmacro newlinify (format &environment e)
  (declare (ignorable e))
  #+allegro
  (if (and (constantp format e)
	   (stringp (sys:constant-value format e)))
      (excl::newlinify-format-string (sys:constant-value format e))
      `(excl::newlinify-format-string ,format))
  #-allegro
  format)

I'm intending to make a patch for this this weekend but if you have time to test it in your setup, that would be great.

thanks,

--
Gary Warren King, metabang.com 
Cell: (413) 559 8738
Fax: (206) 338-4052
gwkkwg on Skype * garethsan on AIM * gwking on twitter





More information about the lift-devel mailing list