clisp-cvs Digest, Vol 43, Issue 2

View: New views
1 Messages — Rating Filter:   Alert me  

clisp-cvs Digest, Vol 43, Issue 2

by clisp-cvs-request :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Send clisp-cvs mailing list submissions to
        clisp-cvs@...

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.sourceforge.net/lists/listinfo/clisp-cvs
or, via email, send a message with subject or body 'help' to
        clisp-cvs-request@...

You can reach the person managing the list at
        clisp-cvs-owner@...

When replying, please edit your Subject line so it is more specific
than "Re: Contents of clisp-cvs digest..."


CLISP CVS commits for today

Today's Topics:

   1. clisp/src ChangeLog,1.7186,1.7187 error.d,1.172,1.173
      (Sam Steingold)
   2. clisp/src ChangeLog, 1.7187, 1.7188 compiler.lisp, 1.351,
      1.352 condition.lisp, 1.100, 1.101 (Sam Steingold)
   3. clisp/src ChangeLog, 1.7188, 1.7189 compiler.lisp, 1.352,
      1.353 condition.lisp, 1.101, 1.102 (Sam Steingold)
   4. clisp/doc Symbol-Table.text, 1.31, 1.32 impbody.xml, 1.578,
      1.579 impent.xml, 1.359, 1.360 (Sam Steingold)


----------------------------------------------------------------------

Message: 1
Date: Sun, 01 Nov 2009 15:02:31 +0000
From: Sam Steingold <sds@...>
Subject: clisp/src ChangeLog,1.7186,1.7187 error.d,1.172,1.173
To: clisp-cvs@...
Message-ID: <E1N4bwt-0001Zi-Jo@...>

Update of /cvsroot/clisp/clisp/src
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv6039/src

Modified Files:
        ChangeLog error.d
Log Message:
(begin_error): ensure *ERROR-OUTPUT* is valid first thing


Index: error.d
===================================================================
RCS file: /cvsroot/clisp/clisp/src/error.d,v
retrieving revision 1.172
retrieving revision 1.173
diff -u -d -r1.172 -r1.173
--- error.d 9 Oct 2009 15:24:38 -0000 1.172
+++ error.d 1 Nov 2009 15:02:28 -0000 1.173
@@ -38,6 +38,8 @@
   end_system_call(); /* there is no system call running anymore */
   cancel_interrupts();
   STOP_WRITING_TO_SUBPROCESS;
+  /* make sure *ERROR-OUTPUT* is valid */
+  var_stream(S(error_output),strmflags_wr_ch_B);
   if (!posfixnump(Symbol_value(S(recursive_error_count)))) /* should be a fixnum >=0 */
     Symbol_value(S(recursive_error_count)) = Fixnum_0; /* otherwise emergency correction */
   /* increase error-count, if >3 abort output: */

Index: ChangeLog
===================================================================
RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v
retrieving revision 1.7186
retrieving revision 1.7187
diff -u -d -r1.7186 -r1.7187
--- ChangeLog 1 Nov 2009 03:32:30 -0000 1.7186
+++ ChangeLog 1 Nov 2009 15:02:28 -0000 1.7187
@@ -1,3 +1,7 @@
+2009-11-01  Sam Steingold  <sds@...>
+
+ * error.d (begin_error): ensure *ERROR-OUTPUT* is valid first thing
+
 2009-10-31  Sam Steingold  <sds@...>
 
  * makemake.in (fsstnd): infer based on TSYSOS instead of HSYSOS




------------------------------

Message: 2
Date: Sun, 01 Nov 2009 21:07:20 +0000
From: Sam Steingold <sds@...>
Subject: clisp/src ChangeLog, 1.7187, 1.7188 compiler.lisp, 1.351,
        1.352 condition.lisp, 1.100, 1.101
To: clisp-cvs@...
Message-ID: <E1N4hdw-0008FL-NM@...>

Update of /cvsroot/clisp/clisp/src
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31648/src

Modified Files:
        ChangeLog compiler.lisp condition.lisp
Log Message:
* compiler.lisp (c-current-location): when returning a non-empty
value, terminate it with ": "
(c-warning, c-error): C-CURRENT-LOCATION is either empty or is
terminated by ": ", so adjust its use
* condition.lisp (c-warning): ditto; also bind *ERROR-OUTPUT* to
*C-ERROR-OUTPUT*, never to *C-LISTING-OUTPUT* which may be NIL,
because *COMPILE-VERBOSE* does not affect condition handling


Index: condition.lisp
===================================================================
RCS file: /cvsroot/clisp/clisp/src/condition.lisp,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -d -r1.100 -r1.101
--- condition.lisp 28 Oct 2009 19:44:59 -0000 1.100
+++ condition.lisp 1 Nov 2009 21:07:18 -0000 1.101
@@ -1668,10 +1668,9 @@
 
 ;; for X3J13 Issue COMPILER-DIAGNOSTICS:USE-HANDLER
 (defun c-warning (type format-string &rest args)
-  (let ((*error-output*
-         (if *compile-verbose* *c-error-output* *c-listing-output*)))
+  (let ((*error-output* *c-error-output*))
     (apply #'warn-of-type type
-           (string-concat (c-current-location) ": " format-string)
+           (string-concat (c-current-location) format-string)
            args)))
 
 ;; WARN, CLtL2 p. 912

Index: compiler.lisp
===================================================================
RCS file: /cvsroot/clisp/clisp/src/compiler.lisp,v
retrieving revision 1.351
retrieving revision 1.352
diff -u -d -r1.351 -r1.352
--- compiler.lisp 29 Oct 2009 21:41:24 -0000 1.351
+++ compiler.lisp 1 Nov 2009 21:07:18 -0000 1.352
@@ -1915,13 +1915,17 @@
 (defun in-defun-p (fun)
   (and (equal fun (current-function)) (defining-p fun)))
 
-(defun c-current-location ()
-  (format nil (TEXT "~@[in ~S ~]~A") (current-function) (c-source-location)))
+(defun c-current-location (&optional (in-function (current-function)))
+  (let ((f (if in-function (format nil (TEXT "in ~S ") in-function) #1=""))
+        (l (c-source-location)))
+    (if (and (string= f #1#) (string= l #1#))
+      #1#
+      (string-concat f l ": "))))
 
 (predefun c-warning (type cstring &rest args)
   (declare (ignore type))
   (apply #'c-comment
-         (string-concat (TEXT "WARNING ~A:") "~%" cstring)
+         (string-concat (TEXT "WARNING: ~A") "~%" cstring)
          (c-current-location) args))
 
 (defvar *warning-count*)
@@ -1949,8 +1953,8 @@
       (when *compiling-from-file*
         (pushnew in-function *functions-with-errors*)))
     (fresh-line *c-error-output*)
-    (format *c-error-output* (TEXT "ERROR~@[ in ~S~]~A :")
-            in-function (c-source-location))
+    (format *c-error-output* (TEXT "ERROR: ~A")
+            (c-current-location in-function))
     (terpri *c-error-output*)
     (apply #'format *c-error-output* cstring args)
     (elastic-newline *c-error-output*))

Index: ChangeLog
===================================================================
RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v
retrieving revision 1.7187
retrieving revision 1.7188
diff -u -d -r1.7187 -r1.7188
--- ChangeLog 1 Nov 2009 15:02:28 -0000 1.7187
+++ ChangeLog 1 Nov 2009 21:07:18 -0000 1.7188
@@ -1,5 +1,15 @@
 2009-11-01  Sam Steingold  <sds@...>
 
+ * compiler.lisp (c-current-location): when returning a non-empty
+ value, terminate it with ": "
+ (c-warning, c-error): C-CURRENT-LOCATION is either empty or is
+ terminated by ": ", so adjust its use
+ * condition.lisp (c-warning): ditto; also bind *ERROR-OUTPUT* to
+ *C-ERROR-OUTPUT*, never to *C-LISTING-OUTPUT* which may be NIL,
+ beause *COMPILE-VERBOSE* does not affect condition handling
+
+2009-11-01  Sam Steingold  <sds@...>
+
  * error.d (begin_error): ensure *ERROR-OUTPUT* is valid first thing
 
 2009-10-31  Sam Steingold  <sds@...>




------------------------------

Message: 3
Date: Mon, 02 Nov 2009 02:56:46 +0000
From: Sam Steingold <sds@...>
Subject: clisp/src ChangeLog, 1.7188, 1.7189 compiler.lisp, 1.352,
        1.353 condition.lisp, 1.101, 1.102
To: clisp-cvs@...
Message-ID: <E1N4n66-00049G-Sp@...>

Update of /cvsroot/clisp/clisp/src
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15934/src

Modified Files:
        ChangeLog compiler.lisp condition.lisp
Log Message:
* compiler.lisp (c-cerror): extract predefun from ...
(c-error): use it; accept DETAIL as the 1st argument
(test-list, c-form, test-argument-syntax, c-illegal-syntax)
(c-analyze-lambdalist, bind-fixed-var-1, bind-movable-var)
(bind-movable-var, c-DECLARE, c-SETQ, c-PSETQ)
(c-MULTIPLE-VALUE-SETQ, c-MULTIPLE-VALUE-BIND, check-blockname)
(c-RETURN-FROM, c-TAGBODY, c-GO, c-FUNCTION, err-syntax)
(c-SYMBOL-MACROLET, c-EVAL-WHEN, c-COND, c-CASE, c-FUNCALL-INLINE):
pass DETAIL to C-ERROR
* condition.lisp (c-cerror): defun here: signal source-program-error


Index: condition.lisp
===================================================================
RCS file: /cvsroot/clisp/clisp/src/condition.lisp,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -d -r1.101 -r1.102
--- condition.lisp 1 Nov 2009 21:07:18 -0000 1.101
+++ condition.lisp 2 Nov 2009 02:56:44 -0000 1.102
@@ -1673,6 +1673,14 @@
            (string-concat (c-current-location) format-string)
            args)))
 
+(defun c-cerror (location detail format-string &rest args)
+  (let ((*error-output* *c-error-output*))
+    (apply #'cerror-of-type (TEXT "Ignore the error and proceed")
+           'simple-source-program-error
+           :form *form* :detail detail
+           (string-concat location format-string)
+           args)))
+
 ;; WARN, CLtL2 p. 912
 ;; (WARN format-string {arg}*)
 (defun warn (format-string &rest args)

Index: compiler.lisp
===================================================================
RCS file: /cvsroot/clisp/clisp/src/compiler.lisp,v
retrieving revision 1.352
retrieving revision 1.353
diff -u -d -r1.352 -r1.353
--- compiler.lisp 1 Nov 2009 21:07:18 -0000 1.352
+++ compiler.lisp 2 Nov 2009 02:56:44 -0000 1.353
@@ -1941,23 +1941,27 @@
 (defun c-style-warn (cstring &rest args)
   (incf *style-warning-count*)
   (incf *warning-count*)
-  (apply #'c-warning 'sys::simple-style-warning cstring args))
+  (apply 'c-warning 'sys::simple-style-warning cstring args))
+
+;; continuable compiler error
+(predefun c-cerror (location detail cstring &rest args)
+  (declare (ignore detail))
+  (fresh-line *c-error-output*)
+  (format *c-error-output* (TEXT "ERROR: ~A") location)
+  (terpri *c-error-output*)
+  (apply #'format *c-error-output* cstring args)
+  (elastic-newline *c-error-output*))
 
 (defvar *error-count*)
 ;; (C-ERROR controlstring . args)
 ;; issue a compiler error (via FORMAT) and terminate the current C-FORM.
-(defun c-error (cstring &rest args)
+(defun c-error (detail cstring &rest args)
   (incf *error-count*)
   (let ((in-function (current-function)))
     (when in-function
       (when *compiling-from-file*
         (pushnew in-function *functions-with-errors*)))
-    (fresh-line *c-error-output*)
-    (format *c-error-output* (TEXT "ERROR: ~A")
-            (c-current-location in-function))
-    (terpri *c-error-output*)
-    (apply #'format *c-error-output* cstring args)
-    (elastic-newline *c-error-output*))
+    (apply 'c-cerror (c-current-location in-function) detail cstring args))
   (throw 'c-error
     (make-anode :source NIL
                 :type 'ERROR
@@ -2097,12 +2101,12 @@
 ;; and has at least l1, but at most l2 elements. Else: Error.
 (defun test-list (L &optional (l1 0) (l2 nil))
   (unless (and (listp L) (null (cdr (last L))))
-    (c-error (TEXT "Code contains dotted list ~S") L))
+    (c-error L (TEXT "Code contains dotted list ~S") L))
   (unless (>= (length L) l1)
-    (c-error (TEXT "Form too short, too few arguments: ~S") L))
+    (c-error L (TEXT "Form too short, too few arguments: ~S") L))
   (when l2
     (unless (<= (length L) l2)
-      (c-error (TEXT "Form too long, too many arguments: ~S") L))))
+      (c-error L (TEXT "Form too long, too many arguments: ~S") L))))
 
 ;; c-form-table contains the handler function (to be called without arguments)
 ;; for all functions/specialforms/macros, that have to be treated specially.
@@ -2358,7 +2362,7 @@
             (if (lambda-form-p fun)
               (c-form `(FUNCALL (FUNCTION ,fun) ,@(cdr *form*)))
               #| not: (c-LAMBDA-FUNCTION-CALL fun (cdr *form*)) |#
-              (c-error (TEXT "Not the name of a function: ~S") fun))))))))
+              (c-error fun (TEXT "Not the name of a function: ~S") fun))))))))
   #+CLISP-DEBUG (setf (anode-source anode) *form*)
   ;; If no values are needed and no side effects are produced,
   ;; the appendant code can be discarded completely:
@@ -2756,7 +2760,7 @@
 (defun test-argument-syntax (args applyargs fun req opt rest-p key-p keylist
                              allow-p)
   (unless (and (listp args) (null (cdr (last args))))
-    (c-error (TEXT "argument list to function ~S is dotted: ~S")
+    (c-error args (TEXT "argument list to function ~S is dotted: ~S")
              fun args))
   (let ((n (length args))
         (reqopt (+ req opt)))
@@ -3448,7 +3452,7 @@
 ;; Syntax-Analysis:
 
 (defun c-illegal-syntax (form caller)
-  (c-error-c (TEXT "Illegal syntax in ~A: ~S") caller form))
+  (c-error-c form (TEXT "Illegal syntax in ~A: ~S") caller form))
 
 ;; analyzes a parameter-list of LET/LET*, returns:
 ;; the List of Symbols,
@@ -3485,7 +3489,7 @@
     #'(lambda (form errorstring &rest arguments)
         (declare (ignore form))
         (catch 'c-error
-          (apply #'c-error errorstring arguments)))))
+          (apply #'c-error lambdalist errorstring arguments)))))
 
 (defun lambda-list-to-signature (lambda-list)
   (multiple-value-bind (req opt opt-i opt-p rest
@@ -3640,7 +3644,7 @@
     ;; must bind symbol dynamically:
     (progn
       (when (l-constantp symbol)
-        (c-error-c (TEXT "Constant ~S cannot be bound.")
+        (c-error-c symbol (TEXT "Constant ~S cannot be bound.")
                    symbol))
       (make-special-var symbol))
     ;; must bind symbol lexically :
@@ -3755,7 +3759,7 @@
     (progn
       (if (l-constantp symbol)
         (progn
-          (c-error-c (TEXT "Constant ~S cannot be bound.") symbol)
+          (c-error-c symbol (TEXT "Constant ~S cannot be bound.") symbol)
           (push 0 *stackz*))
         (push '(BIND 1) *stackz*))
       (make-special-var symbol))
@@ -4459,7 +4463,7 @@
 ;; compile (DECLARE {declspec}*)
 (defun c-DECLARE ()
   (test-list *form* 1)
-  (c-error (TEXT "Misplaced declaration: ~S") *form*))
+  (c-error *form* (TEXT "Misplaced declaration: ~S") *form*))
 
 ;; compile (LOAD-TIME-VALUE form [read-only-p])
 (defun c-LOAD-TIME-VALUE ()
@@ -4677,7 +4681,7 @@
 (defun c-SETQ ()
   (test-list *form* 1)
   (when (evenp (length *form*))
-    (c-error (TEXT "Odd number of arguments to SETQ: ~S") *form*))
+    (c-error *form* (TEXT "Odd number of arguments to SETQ: ~S") *form*))
   (if (null (cdr *form*))
     (c-NIL) ; (SETQ) == (PROGN) == NIL
     (if (setqlist-macrop (cdr *form*))
@@ -4707,7 +4711,7 @@
                 (push setteri codelist)
                 (seclass-or-f seclass setteri)))
             (progn
-              (c-error-c (TEXT "Cannot assign to non-symbol ~S.")
+              (c-error-c symboli (TEXT "Cannot assign to non-symbol ~S.")
                          symboli)
               (push '(VALUES1) codelist))))))))
 
@@ -4716,7 +4720,7 @@
 (defun c-PSETQ ()
   (test-list *form* 1)
   (when (evenp (length *form*))
-    (c-error (TEXT "Odd number of arguments to PSETQ: ~S") *form*))
+    (c-error *form* (TEXT "Odd number of arguments to PSETQ: ~S") *form*))
   (if (null (cdr *form*))
     (c-NIL) ; (PSETQ) == (PROGN) == NIL
     (if (setqlist-macrop (cdr *form*))
@@ -4736,7 +4740,7 @@
                 (push anodei anodelist)
                 (push (c-VARSET symboli anodei nil) setterlist)
                 (push 0 *stackz*))
-              (c-error-c (TEXT "Cannot assign to non-symbol ~S.")
+              (c-error-c symboli (TEXT "Cannot assign to non-symbol ~S.")
                          symboli))))
         ;; try to reorganize them in a fashion, that as few  (PUSH)'s and
         ;; (POP)'s as possible are necessary:
@@ -4828,7 +4832,7 @@
                   (set-check-lock 'multiple-value-setq symbol)
                   (push setter codelist)
                   (seclass-or-f seclass setter)))
-              (c-error-c (TEXT "Cannot assign to non-symbol ~S.")
+              (c-error-c symbol (TEXT "Cannot assign to non-symbol ~S.")
                          symbol)))
           (push '(POP) codelist)
           (push 1 *stackz*))))))
@@ -4953,7 +4957,7 @@
   (let ((symbols (second *form*)))
     (dolist (sym symbols)
       (unless (symbolp sym)
-        (c-error (TEXT "Only symbols may be used as variables, not ~S")
+        (c-error sym (TEXT "Only symbols may be used as variables, not ~S")
                  sym)))
     (if (= (length symbols) 1)
       (c-form `(LET ((,(first symbols) ,(third *form*))) ,@(cdddr *form*)))
@@ -5047,7 +5051,7 @@
 
 (macrolet ((check-blockname (name)
              `(unless (symbolp ,name)
-                (c-error-c (TEXT "Block name must be a symbol, not ~S")
+                (c-error-c ,name (TEXT "Block name must be a symbol, not ~S")
                            ,name)
                 (setq ,name NIL)))) ; Default-Blockname
 
@@ -5089,7 +5093,8 @@
     (check-blockname name)
     (let ((a (benv-search name)))
       (cond ((null a) ; this Blockname is invisible
-             (c-error (TEXT "RETURN-FROM block ~S is impossible from here.")
+             (c-error name
+                      (TEXT "RETURN-FROM block ~S is impossible from here.")
                       name))
             ((block-p a) ; visible in *benv* without %benv%
              (let ((anode (c-form (third *form*) (block-for-value a))))
@@ -5147,7 +5152,7 @@
               (push item taglist)
               (push (make-label 'NIL) labellist))
             (c-error-c
-             (TEXT "Only numbers and symbols are valid tags, not ~S")
+             item (TEXT "Only numbers and symbols are valid tags, not ~S")
              item)))))
     (let* ((*stackz* (cons 0 *stackz*)) ; poss. TAGBODY-Frame
            (tagbody (make-tagbody :fnode *func* :labellist labellist
@@ -5219,10 +5224,10 @@
   (test-list *form* 2 2)
   (let ((tag (second *form*)))
     (unless (or (symbolp tag) (numberp tag))
-      (c-error (TEXT "Tag must be a symbol or a number, not ~S") tag))
+      (c-error tag (TEXT "Tag must be a symbol or a number, not ~S") tag))
     (multiple-value-bind (a b) (genv-search tag)
       (cond ((null a) ; this Tag is invisible
-             (c-error (TEXT "GO to tag ~S is impossible from here.") tag))
+             (c-error tag (TEXT "GO to tag ~S is impossible from here.") tag))
             ((tagbody-p a) ; visible in *genv* without %genv%
              (if (and (eq (tagbody-fnode a) *func*)
                       (may-UNWIND *stackz* (tagbody-stackz a)))
@@ -5295,8 +5300,10 @@
                  :code `((FCONST ,(const-value-safe f2))))
                (c-VAR (var-name f2))))
             (t (if (and (null f1) m)
-                 (c-error (TEXT "~S is not a function. It is a locally defined macro.")
-                          name)
+                 (c-error
+                  name
+                  (TEXT "~S is not a function. It is a locally defined macro.")
+                  name)
                  (compiler-error 'c-FUNCTION name))))))
       (let ((funname (car (last *form*))))
         (if (lambda-form-p funname)
@@ -5309,7 +5316,7 @@
                      (cdr funname))))
             (unless *no-code* (propagate-far-used fnode))
             (c-fnode-function fnode))
-          (c-error (TEXT "Only symbols and lambda expressions are function names, not ~S")
+          (c-error funname (TEXT "Only symbols and lambda expressions are function names, not ~S")
                    funname))))))
 
 ;; compile (%GENERIC-FUNCTION-LAMBDA . lambdabody)
@@ -5359,7 +5366,7 @@
 
 (macrolet ((err-syntax (specform fdef)
              `(c-error-c
-               (TEXT "Illegal function definition syntax in ~S: ~S")
+               ,fdef (TEXT "Illegal function definition syntax in ~S: ~S")
                ,specform ,fdef))
            (add-fenv (namelist fenvconslist)
              `(do ((namelistr ,namelist (cdr namelistr))
@@ -5778,7 +5785,7 @@
             (progn
               (push (first symdef) symbols)
               (push (second symdef) expansions))
-            (c-error-c (TEXT "~S: Illegal syntax: ~S")
+            (c-error-c symdef (TEXT "~S: Illegal syntax: ~S")
                        'symbol-macrolet symdef))))
     (let ((*denv* *denv*)
           (*venv*
@@ -5794,10 +5801,10 @@
           (push-*denv* other-decls)
           (dolist (symbol symbols)
             (if (or (constantp symbol) (proclaimed-special-p symbol))
-              (c-error-c (TEXT "~S: symbol ~S is declared SPECIAL and must not be declared a macro")
+              (c-error-c symbol (TEXT "~S: symbol ~S is declared SPECIAL and must not be declared a macro")
                          'symbol-macrolet symbol)
               (when (memq symbol *specials*)
-                (c-error-c (TEXT "~S: symbol ~S must not be declared SPECIAL and a macro at the same time")
+                (c-error-c symbol (TEXT "~S: symbol ~S must not be declared SPECIAL and a macro at the same time")
                            'symbol-macrolet symbol))))
           (funcall c `(PROGN ,@body-rest)))))))
 
@@ -5818,7 +5825,8 @@
         (((NOT EVAL) (NOT :EXECUTE)) (setq load-p t compile-p t))
         (((NOT COMPILE)) (setq load-p t eval-p t))
         (((NOT :COMPILE-TOPLEVEL)) (setq load-p t execute-p t))
-        (t (c-error (TEXT "~S situation must be ~S, ~S or ~S, but not ~S")
+        (t (c-error 'situation
+                    (TEXT "~S situation must be ~S, ~S or ~S, but not ~S")
                     'eval-when :load-toplevel :compile-toplevel :execute
                     situation))))
     (let ((form `(PROGN ,@(cddr *form*))))
@@ -5835,7 +5843,7 @@
         'NIL
         (let ((clause (car clauses)))
           (if (atom clause)
-            (c-error (TEXT "COND clause without test: ~S")
+            (c-error clause (TEXT "COND clause without test: ~S")
                      clause)
             (let ((test (car clause)))
               (if (cdr clause)
@@ -5857,7 +5865,7 @@
           ((endp clauses))
         (let ((clause (pop clauses)))
           (if (atom clause)
-            (c-error (TEXT "CASE clause without objects: ~S")
+            (c-error clause (TEXT "CASE clause without objects: ~S")
                      clause)
             (let ((keys (car clause)))
               (if default-passed ; was the Default already there?
@@ -5866,7 +5874,7 @@
                   (progn
                     (when clauses
                       (c-error-c
-                       (TEXT "~S: the ~S clause must be the last one: ~S")
+                       keys (TEXT "~S: the ~S clause must be the last one: ~S")
                        'case keys *form*))
                     (setq keys 'T)
                     (setq default-passed t))
@@ -6143,7 +6151,7 @@
       (when (and (null restvar) (> |t| (+ r s)))
         ;; too many arguments specified. Is redressed by introduction
         ;; of several additional optional arguments:
-        (c-error-c (TEXT "Too many arguments to ~S") funform)
+        (c-error-c funform (TEXT "Too many arguments to ~S") funform)
         (dotimes (i (- |t| (+ r s)))
           (let ((var (gensym)))
             (setq optvar (append optvar (list var)))
@@ -6154,7 +6162,7 @@
       (when (and (null applyarglist) (< |t| r))
         ;; too few arguments specified. Is redressed by introduction
         ;; of additional arguments:
-        (c-error-c (TEXT "Too few arguments to ~S") funform)
+        (c-error-c funform (TEXT "Too few arguments to ~S") funform)
         (setq arglist (append arglist
                               (make-list (- r |t|) :initial-element nil)))
         (setq |t| r))

Index: ChangeLog
===================================================================
RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v
retrieving revision 1.7188
retrieving revision 1.7189
diff -u -d -r1.7188 -r1.7189
--- ChangeLog 1 Nov 2009 21:07:18 -0000 1.7188
+++ ChangeLog 2 Nov 2009 02:56:44 -0000 1.7189
@@ -1,12 +1,25 @@
 2009-11-01  Sam Steingold  <sds@...>
 
+ * compiler.lisp (c-cerror): extract predefun from ...
+ (c-error): use it; accept DETAIL as the 1st argument
+ (test-list, c-form, test-argument-syntax, c-illegal-syntax)
+ (c-analyze-lambdalist, bind-fixed-var-1, bind-movable-var)
+ (bind-movable-var, c-DECLARE, c-SETQ, c-PSETQ)
+ (c-MULTIPLE-VALUE-SETQ, c-MULTIPLE-VALUE-BIND, check-blockname)
+ (c-RETURN-FROM, c-TAGBODY, c-GO, c-FUNCTION, err-syntax)
+ (c-SYMBOL-MACROLET, c-EVAL-WHEN, c-COND, c-CASE, c-FUNCALL-INLINE):
+ pass DETAIL to C-ERROR
+ * condition.lisp (c-cerror): defun here: signal source-program-error
+
+2009-11-01  Sam Steingold  <sds@...>
+
  * compiler.lisp (c-current-location): when returning a non-empty
  value, terminate it with ": "
  (c-warning, c-error): C-CURRENT-LOCATION is either empty or is
  terminated by ": ", so adjust its use
  * condition.lisp (c-warning): ditto; also bind *ERROR-OUTPUT* to
  *C-ERROR-OUTPUT*, never to *C-LISTING-OUTPUT* which may be NIL,
- beause *COMPILE-VERBOSE* does not affect condition handling
+ because *COMPILE-VERBOSE* does not affect condition handling
 
 2009-11-01  Sam Steingold  <sds@...>
 




------------------------------

Message: 4
Date: Mon, 02 Nov 2009 02:56:46 +0000
From: Sam Steingold <sds@...>
Subject: clisp/doc Symbol-Table.text, 1.31, 1.32 impbody.xml, 1.578,
        1.579 impent.xml, 1.359, 1.360
To: clisp-cvs@...
Message-ID: <E1N4n66-00049A-Gu@...>

Update of /cvsroot/clisp/clisp/doc
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15934/doc

Modified Files:
        Symbol-Table.text impbody.xml impent.xml
Log Message:
* compiler.lisp (c-cerror): extract predefun from ...
(c-error): use it; accept DETAIL as the 1st argument
(test-list, c-form, test-argument-syntax, c-illegal-syntax)
(c-analyze-lambdalist, bind-fixed-var-1, bind-movable-var)
(bind-movable-var, c-DECLARE, c-SETQ, c-PSETQ)
(c-MULTIPLE-VALUE-SETQ, c-MULTIPLE-VALUE-BIND, check-blockname)
(c-RETURN-FROM, c-TAGBODY, c-GO, c-FUNCTION, err-syntax)
(c-SYMBOL-MACROLET, c-EVAL-WHEN, c-COND, c-CASE, c-FUNCALL-INLINE):
pass DETAIL to C-ERROR
* condition.lisp (c-cerror): defun here: signal source-program-error


Index: impbody.xml
===================================================================
RCS file: /cvsroot/clisp/clisp/doc/impbody.xml,v
retrieving revision 1.578
retrieving revision 1.579
diff -u -d -r1.578 -r1.579
--- impbody.xml 28 Oct 2009 15:38:00 -0000 1.578
+++ impbody.xml 2 Nov 2009 02:56:43 -0000 1.579
@@ -533,6 +533,23 @@
 <para>Hash tables are &ext-obj;s.</para>
 
 </section>
+
+<section id="compile-errors"><title>Exceptional Situations in the Compiler
+  <ulink role="clhs" url="sec_3-2-5"/></title>
+
+<para>Both &compile; and &eval; may &signal; the &source-program-error;
+ &condition-t; which derives from &program-error-t; and which contains
+ additional slots with accessors <variablelist>
+<varlistentry><term>&source-program-error-form;</term>
+ <listitem><simpara>Returns the whole form in which the &error-t; was
+   &signal;ed</simpara></listitem></varlistentry>
+<varlistentry><term>&source-program-error-detail;</term>
+ <listitem><simpara>Returns the specific (usually small) part of the
+   above which triggered the &error-t;</simpara></listitem></varlistentry>
+</variablelist></para>
+
+</section>
+
 </section>
 
 <section id="declarations"><title>Declarations

Index: impent.xml
===================================================================
RCS file: /cvsroot/clisp/clisp/doc/impent.xml,v
retrieving revision 1.359
retrieving revision 1.360
diff -u -d -r1.359 -r1.360
--- impent.xml 23 Sep 2009 13:34:54 -0000 1.359
+++ impent.xml 2 Nov 2009 02:56:44 -0000 1.360
@@ -419,6 +419,9 @@
 <!ENTITY sost-peer '<link linkend="sost-peer"><function>SOCKET:SOCKET-STREAM-PEER</function></link>'>
 <!ENTITY sost-port '<link linkend="sost-hopo"><function>SOCKET:SOCKET-STREAM-PORT</function></link>'>
 <!ENTITY sost-shut '<link linkend="sost-shut"><function>SOCKET:SOCKET-STREAM-SHUTDOWN</function></link>'>
+<!ENTITY source-program-error '<link linkend="compile-errors"><classname>EXT:SOURCE-PROGRAM-ERROR</classname></link>'>
+<!ENTITY source-program-error-detail '<link linkend="compile-errors"><function>EXT:SOURCE-PROGRAM-ERROR-DETAIL</function></link>'>
+<!ENTITY source-program-error-form '<link linkend="compile-errors"><function>EXT:SOURCE-PROGRAM-ERROR-FORM</function></link>'>
 <!ENTITY source-types '<link linkend="source-types"><varname>CUSTOM:*SOURCE-FILE-TYPES*</varname></link>'>
 <!ENTITY spacecharprint '<link linkend="spacecharprint"><varname>CUSTOM:*PRINT-SPACE-CHAR-ANSI*</varname></link>'>
 <!ENTITY spe-var-p '<link linkend="spe-var-p"><function>EXT:SPECIAL-VARIABLE-P</function></link>'>

Index: Symbol-Table.text
===================================================================
RCS file: /cvsroot/clisp/clisp/doc/Symbol-Table.text,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- Symbol-Table.text 15 Sep 2008 22:47:53 -0000 1.31
+++ Symbol-Table.text 2 Nov 2009 02:56:43 -0000 1.32
@@ -4,6 +4,12 @@
 eval-env
 CL:DEFINE-COMPILER-MACRO
 compiler-macros
+EXT:SOURCE-PROGRAM-ERROR
+compile-errors
+EXT:SOURCE-PROGRAM-ERROR-DETAIL
+compile-errors
+EXT:SOURCE-PROGRAM-ERROR-FORM
+compile-errors
 EXT:NOTSPECIAL
 notspec-decl
 CL:SPECIAL
@@ -462,6 +468,8 @@
 compile-file-path
 CL:REQUIRE
 require
+CUSTOM:*USER-LIB-DIRECTORY*
+require
 CL:LOAD
 loadfile
 CUSTOM:*LOAD-ECHO*




------------------------------

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference

------------------------------

_______________________________________________
clisp-cvs mailing list
clisp-cvs@...
https://lists.sourceforge.net/lists/listinfo/clisp-cvs


End of clisp-cvs Digest, Vol 43, Issue 2
****************************************

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
clisp-devel mailing list
clisp-devel@...
https://lists.sourceforge.net/lists/listinfo/clisp-devel