[mcclim-devel] ACL70 bug: Ignorable in argument acceptor functions for define-command

rpgoldman at real-time.com rpgoldman at real-time.com
Tue Aug 30 17:39:00 UTC 2005


I find that with allegro version 7.0, McCLIM crashes while compiling.
The problem first crops up compiling 

(define-command (com-query-exit :command-table accepting-values
				:name nil
				:provide-output-destination-keyword nil)
    ()
  (signal 'av-exit))

which macroexpands to:

(PROGN (DEFUN COM-QUERY-EXIT () (SIGNAL 'AV-EXIT))
       (ADD-COMMAND-TO-COMMAND-TABLE 'COM-QUERY-EXIT 'ACCEPTING-VALUES
         :NAME NIL
         :MENU 'NIL
         :KEYSTROKE 'NIL
         :ERRORP NIL)
       (DEFUN COM-QUERY-EXIT%ACCEPTOR%9 (#:STREAM61697)
         (LET ((#:KEY-RESULTS61698 NIL))
           (BLOCK ACTIVATED
             (FLET ((EAT-DELIMITER-OR-ACTIVATOR NIL
                      (LET ((GESTURE (READ-GESTURE :STREAM #:STREAM61697)))
                        (WHEN (OR (NULL GESTURE) (ACTIVATION-GESTURE-P GESTURE))
                          (RETURN-FROM ACTIVATED NIL))
                        (UNLESS (DELIMITER-GESTURE-P GESTURE)
                          (UNREAD-GESTURE GESTURE :STREAM #:STREAM61697)))))
               (DECLARE (IGNORABLE #'EAT-DELIMITER-OR-ACTIVATOR))
               (LET ((GESTURE (READ-GESTURE :STREAM #:STREAM61697 :TIMEOUT 0 :PEEK-P T)))
                 (COND ((AND GESTURE (ACTIVATION-GESTURE-P GESTURE)) (RETURN-FROM ACTIVATED NIL)))
                 NIL)))
           (LIST* #:KEY-RESULTS61698)))
       (DEFUN COM-QUERY-EXIT%PARTIAL%8 (#:COMMAND-TABLE61699 #:STREAM61700 #:PARTIAL-COMMAND61701)
         (DESTRUCTURING-BIND (#:COMMAND-NAME61702) #:PARTIAL-COMMAND61701
                             (LET ((#:COMMAND-LINE-NAME61703
                                    (COMMAND-LINE-NAME-FOR-COMMAND #:COMMAND-NAME61702
                                                                   #:COMMAND-TABLE61699
                                      :ERRORP NIL)))
                               (ACCEPTING-VALUES (#:STREAM61700)
                                (FORMAT #:STREAM61700
                                        "You are being prompted for arguments to ~S~%"
                                        #:COMMAND-LINE-NAME61703))
                               (LIST #:COMMAND-NAME61702))))
       (DEFUN |COM-QUERY-EXIT%unparser%9| (#:COMMAND61707 #:STREAM61709)
         (DECLARE (IGNORABLE #:STREAM61709))
         (LET* ((#:SEPERATOR61712 #\Space) (#:COMMAND-ARGS61708 (CDR #:COMMAND61707)))
           (DECLARE (IGNORABLE #:SEPERATOR61712 #:COMMAND-ARGS61708))))
       NIL
       (SETF (GETHASH 'COM-QUERY-EXIT *COMMAND-PARSER-TABLE*)
             (MAKE-INSTANCE 'COMMAND-PARSERS :PARSER #'COM-QUERY-EXIT%ACCEPTOR%9 :PARTIAL-PARSER
                            #'COM-QUERY-EXIT%PARTIAL%8 :REQUIRED-ARGS 'NIL :KEYWORD-ARGS 'NIL
                            :ARGUMENT-UNPARSER #'|COM-QUERY-EXIT%unparser%9|))
       'COM-QUERY-EXIT)

Allegro v 7.0 chokes on 

               (DECLARE (IGNORABLE #'EAT-DELIMITER-OR-ACTIVATOR))

AFAICT, Allegro 7.0 can't compile ignorable declarations applied to
constant functions like this.   

I believe this is an allegro bug, as is suggested by the error
message:

; While compiling COM-QUERY-EXIT%ACCEPTOR%0:
Error: We don't yet handle ignore of #'EAT-DELIMITER-OR-ACTIVATOR.


For now, I was just going to put the following conditional compilation
directive in commands.lisp:

#-ALLEGRO-V7.0 (declare (ignorable (function eat-delimiter-or-activator)))


Any reason not to commit this change?

Actually, I'm on vacation, and it may be difficult for me to make this
commit for a week or so, so if anyone else would like to, that would
be great!

R



More information about the mcclim-devel mailing list