Hi,
I just installed the latest git snapshot of closure-common. I ran into the following error while loading it -
-- x --
(LAMBDA (RUNES:ROD RUNES::INDEX) (BLOCK RUNES:RUNE (CHAR RUNES:ROD RUNES::INDEX))) is not a valid function spec [Condition of type TYPE-ERROR]
Restarts: 0: [NIL] retry the compilation of /Users/chaitanya/lisp/libs/site/closure-common/ystream.lisp 1: [NIL] continue compiling /Users/chaitanya/lisp/libs/site/closure-common/ystream.lisp but generate no output file 2: [RETRY] Retry performing #<ASDF:COMPILE-OP NIL @ #x113a195a> on #<CLOSURE-COMMON-SYSTEM::CLOSURE-SOURCE-FILE "ystream" @ #x103f0822>. 3: [ACCEPT] Continue, treating #<ASDF:COMPILE-OP NIL @ #x113a195a> on #<CLOSURE-COMMON-SYSTEM::CLOSURE-SOURCE-FILE "ystream" @ #x103f0822> as having been successful. 4: [ABORT-REQUEST] Abort handling SLIME request. 5: [ABORT] Abort entirely from this (lisp) process.
Backtrace: 0: (SWANK::DEBUG-IN-EMACS #<TYPE-ERROR @ #x114e80b2>) 1: (SWANK:SWANK-DEBUGGER-HOOK #<TYPE-ERROR @ #x114e80b2> #<Function SWANK-DEBUGGER-HOOK>) 2: (ERROR TYPE-ERROR :DATUM #1=(LAMBDA (RUNES:ROD RUNES::INDEX) (BLOCK RUNES:RUNE (CHAR RUNES:ROD RUNES::INDEX))) :EXPECTED-TYPE EXCL::FUNCTION-NAME :FORMAT-CONTROL "~s is not a valid function spec" :FORMAT-ARGUMENTS (#1#)) 3: (FBOUNDP (LAMBDA (RUNES:ROD RUNES::INDEX) (BLOCK RUNES:RUNE (CHAR RUNES:ROD RUNES::INDEX)))) 4: (SYSTEM:FUNCTION-INFORMATION (LAMBDA (RUNES:ROD RUNES::INDEX) (BLOCK RUNES:RUNE (CHAR RUNES:ROD RUNES::INDEX))) #<Augmentable COMPILER environment 1 1 1 1 1 15>) 5: (GET-SETF-EXPANSION ((LAMBDA (RUNES:ROD RUNES::INDEX) (BLOCK RUNES:RUNE #)) RUNES::TMP 0) #<Augmentable COMPILER environment 1 1 1 1 1 15>) 6: (SETF (SETF (RUNES:RUNE RUNES::TMP 0) RUNES:RUNE) #<Augmentable COMPILER environment 1 1 1 1 1 15>) 7: (FUNCALL #<Function SETF @ #x100dce22> (SETF (RUNES:RUNE RUNES::TMP 0) RUNES:RUNE) #<Augmentable COMPILER environment 1 1 1 1 1 15>) 8: (COMPILER::PA-COMPILE (SETF (RUNES:RUNE RUNES::TMP 0) RUNES:RUNE) NIL)
-- x --
The error occurred while Lisp was compiling YSTREAM-WRITE-ESCAPABLE-RUNE in ystream.lisp. To me the problem seems that RUNE is defined as a compiler-macro and its also being used as a SETF form. I am not sure whether its a problem with my Lisp or closure-common. I am using ACL 8.0 on Intel Mac OS X.
It loads fine on SBCL, but DEFINLINE doesn't define any compiler macros in SBCL. Maybe that's why it loads fine here and breaks on ACL?
Chaitanya
Hi,
Quoting Chaitanya Gupta (mail@chaitanyagupta.com):
The error occurred while Lisp was compiling YSTREAM-WRITE-ESCAPABLE-RUNE in ystream.lisp. To me the problem seems that RUNE is defined as a compiler-macro and its also being used as a SETF form. I am not sure whether its a problem with my Lisp or closure-common. I am using ACL 8.0 on Intel Mac OS X.
It loads fine on SBCL, but DEFINLINE doesn't define any compiler macros in SBCL. Maybe that's why it loads fine here and breaks on ACL?
thanks for the report and the detailed analysis.
I don't have Allegro and don't really understand the failure mode either, but I've replaced that use of (setf rune) with (setf elt), which should not cause the same problem.
Please try again, d.
David Lichteblau wrote:
I don't have Allegro and don't really understand the failure mode either, but I've replaced that use of (setf rune) with (setf elt), which should not cause the same problem.
I tried the latest snapshot, and its loads fine on ACL now.
Thanks for the quick fix.
Chaitanya