From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Greg Hill Newsgroups: gmane.emacs.bugs Subject: Lisp: interactive-p fails in nested catch or condition-case calls in byte-compiled code Date: Fri, 15 Nov 2002 13:42:44 -0800 Sender: bug-gnu-emacs-admin@gnu.org Message-ID: NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="============_-1174725928==_ma============" X-Trace: main.gmane.org 1037397460 22524 80.91.224.249 (15 Nov 2002 21:57:40 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Fri, 15 Nov 2002 21:57:40 +0000 (UTC) Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 18CoT3-0005r2-00 for ; Fri, 15 Nov 2002 22:57:38 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 18CoUC-00011C-00; Fri, 15 Nov 2002 16:58:48 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 18CoF7-0000dr-00 for bug-gnu-emacs@gnu.org; Fri, 15 Nov 2002 16:43:13 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 18CoF4-0000dX-00 for bug-gnu-emacs@gnu.org; Fri, 15 Nov 2002 16:43:12 -0500 Original-Received: from renfield.synergymicro.com ([153.105.4.30] helo=synergymicro.com) by monty-python.gnu.org with esmtp (Exim 4.10) id 18CoF3-0000aX-00 for bug-gnu-emacs@gnu.org; Fri, 15 Nov 2002 16:43:09 -0500 Original-Received: from synergy.synergy.encinitas.ca.us ([153.105.4.29]) by synergymicro.com (8.9.3/8.9.3) with ESMTP id NAA17390 for ; Fri, 15 Nov 2002 13:45:02 -0800 Original-Received: from [198.17.100.22] (G-Hill-Mac [198.17.100.22]) by synergy.synergy.encinitas.ca.us (8.9.3/8.8.7) with ESMTP id NAA30488 for ; Fri, 15 Nov 2002 13:47:47 -0800 Original-To: bug-gnu-emacs@gnu.org Errors-To: bug-gnu-emacs-admin@gnu.org X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Bug reports for GNU Emacs, the Swiss army knife of text editors List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.emacs.bugs:3884 X-Report-Spam: http://spam.gmane.org/gmane.emacs.bugs:3884 --============_-1174725928==_ma============ Content-Type: text/plain; charset="us-ascii" ; format="flowed" If you call (interactive-p) from inside a (catch... or (condition-case... that is nested within a higher-level (catch... or (condition-case..., then when you run the code interactively, if the code has NOT been byte-compiled, it works correctly (interactive-p returns t); but if the code HAS been byte-compiled, it fails (interactive-p returns nil). The code below illustrates the problem if you run it both byte-compiled and not byte-compiled, and compare the results. (defun cctest () (interactive) (catch 'cctest (message "before condition-case in catch, (interactive-p) = %s" (interactive-p)) (condition-case nil (message "---inside condition-case in catch, (interactive-p) = %s" (interactive-p)) (error nil)) (message "after condition-case in catch, (interactive-p) = %s" (interactive-p)) (catch 'cctest (message "---inside catch in catch, (interactive-p) = %s" (interactive-p))) (message "after catch in catch, (interactive-p) = %s" (interactive-p))) (message "") (condition-case nil (progn (message "before catch in condition-case, (interactive-p) = %s" (interactive-p)) (catch 'cctest (message "---inside catch in condition-case, (interactive-p) = %s" (interactive-p))) (message "after catch in condition-case, (interactive-p) = %s" (interactive-p)) (condition-case nil (message "---inside condition-case in condition-case, (interactive-p) = %s" (interactive-p)) (error nil)) (message "after condition-case in condition-case, (interactive-p) = %s" (interactive-p))) (error nil))) --============_-1174725928==_ma============ Content-Type: text/html; charset="us-ascii" Lisp: interactive-p fails in nested catch or condition
If you call (interactive-p)
   from inside a (catch... or (condition-case...
      that is nested within a higher-level (catch... or (condition-case...,

then when you run the code interactively,
   if the code has NOT been byte-compiled,
      it works correctly (interactive-p returns t);
   but if the code HAS been byte-compiled,
      it fails (interactive-p returns nil).

The code below illustrates the problem if you run it both byte-compiled and not byte-compiled, and compare the results.


(defun cctest ()
  (interactive)
  (catch 'cctest
    (message "before condition-case in catch, (interactive-p) = %s"
           (interactive-p))
    (condition-case nil
    (message "---inside condition-case in catch, (interactive-p) = %s"
              (interactive-p))
      (error nil))
    (message "after condition-case in catch, (interactive-p) = %s"
         (interactive-p))
    (catch 'cctest
      (message "---inside catch in catch, (interactive-p) = %s"
         (interactive-p)))
    (message "after catch in catch, (interactive-p) = %s"
            (interactive-p)))

  (message "")

  (condition-case nil
      (progn
   (message "before catch in condition-case, (interactive-p) = %s"
        (interactive-p))
        (catch 'cctest
    (message "---inside catch in condition-case, (interactive-p) = %s"
               (interactive-p)))
    (message "after catch in condition-case, (interactive-p) = %s"
          (interactive-p))
        (condition-case nil
         (message "---inside condition-case in condition-case, (interactive-p) = %s"
             (interactive-p))
     (error nil))
  (message "after condition-case in condition-case, (interactive-p) = %s"
        (interactive-p)))
    (error nil)))
--============_-1174725928==_ma============--