From: Hannu Koivisto <azure@ik...> - 2002-02-13 15:29:25
Command "ecl -compile foo.lisp"
with foo.lisp containing...
(defmacro invoke-alien-type-method (method type &rest args)
(let ((slot (method-slot method)))
(once-only ((type type))
`(funcall (do ((class (alien-type-class-or-lose (alien-type-class ,type))
(error "Method ~S not defined for ~S"
',method (alien-type-class ,type)))
(let ((fn (,slot class)))
...results to an endless loop of the following error message:
;;; You are recommended to compile again.
;;; The form (DEFMACRO INVOKE-ALIEN-TYPE-METHOD (METHOD TYPE &REST
ARGS) (LET ((SLOT (METHOD-SLOT METHOD))) (ONCE-ONLY ((TYPE
TYPE)) (LIST* 'FUNCALL (LIST 'DO (LIST (LIST 'CLASS (LIST
'ALIEN-TYPE-CLASS-OR-LOSE (LIST 'ALIEN-TYPE-CLASS TYPE))
'(ALIEN-TYPE-CLASS-INCLUDE CLASS))) (LIST '(NULL CLASS) (LIST
'ERROR "Method ~S not defined for ~S" (LIST 'QUOTE METHOD)
(LIST 'ALIEN-TYPE-CLASS TYPE))) (LIST 'LET (LIST (LIST 'FN
(LIST SLOT 'CLASS))) '(WHEN FN (RETURN FN)))) TYPE ARGS)))) was
not evaluated successfully.
I would expect messages about method-slot and once-only not being
defined or something like that.
Please don't send copies of list mail
From: Juan Jose Garcia-Ripoll <jlr@mp...> - 2002-02-13 18:27:57
Sorry for the previous empty message
On Wednesday 13 February 2002 16:29, you wrote:
> (defmacro invoke-alien-type-method (method type &rest args)
> [...] ,type ,@args))))
> ...results to an endless loop of the following error message:
> ;;; You are recommended to compile again.
> ;;; The form (DEFMACRO INVOKE-ALIEN-TYPE-METHOD (METHOD TYPE &REST
There must be an error in the compiler which prevents it from handling errors
that happen during macroexpansion. Both of your messages are related to it,
and I got a few others while fixing definiline. I will look into it, but in
case you dig into it, the bug must be located in the macroexpanders which
happen to be in src/cmp/cmputil.lsp -- there must be some code for error