Date: Friday, September 24, 2010 @ 08:12:05 Author: rtoy Path: /project/cmucl/cvsroot/src
Modified: compiler/fndb.lisp compiler/main.lisp general-info/release-20c.txt
Add :decoding-error arg to compile-file to specify how decoding errors should be handled.
compiler/main.lisp: o Add DECODING-ERROR slot to SOURCE-INFO structure. o MAKE-FILE-SOURCE-INFO requires a decoding error argument so the SOURCE-INFO structure can be properly initialized. o Add :DECODING-ERROR keyword arg to COMPILE-FILE to specify how decoding errors are handled. Default is T, which means to signal an error.
compiler/fndb.lisp: o Tell compiler about the new parameter.
general-info/release-20c.txt: o Document change.
------------------------------+ compiler/fndb.lisp | 3 ++- compiler/main.lisp | 29 ++++++++++++++++++++++------- general-info/release-20c.txt | 11 ++++++++++- 3 files changed, 34 insertions(+), 9 deletions(-)
Index: src/compiler/fndb.lisp diff -u src/compiler/fndb.lisp:1.146 src/compiler/fndb.lisp:1.147 --- src/compiler/fndb.lisp:1.146 Mon Jul 26 13:20:26 2010 +++ src/compiler/fndb.lisp Fri Sep 24 08:12:05 2010 @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /project/cmucl/cvsroot/src/compiler/fndb.lisp,v 1.146 2010-07-26 17:20:26 rtoy Exp $") + "$Header: /project/cmucl/cvsroot/src/compiler/fndb.lisp,v 1.147 2010-09-24 12:12:05 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1152,6 +1152,7 @@ (:entry-points list) (:byte-compile (member t nil :maybe)) (:external-format symbol) + (:decoding-error (or null symbol function)) (:xref t)) (values (or pathname null) boolean boolean))
Index: src/compiler/main.lisp diff -u src/compiler/main.lisp:1.158 src/compiler/main.lisp:1.159 --- src/compiler/main.lisp:1.158 Wed Sep 15 11:47:29 2010 +++ src/compiler/main.lisp Fri Sep 24 08:12:05 2010 @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /project/cmucl/cvsroot/src/compiler/main.lisp,v 1.158 2010-09-15 15:47:29 rtoy Exp $") + "$Header: /project/cmucl/cvsroot/src/compiler/main.lisp,v 1.159 2010-09-24 12:12:05 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -718,14 +718,19 @@ ;; ;; External format to use for the stream if the stream hasn't been opened #+unicode - (external-format :default)) + (external-format :default) + ;; + ;; How to handle decoding errors when reading the source file. + ;; Default is T to signal an error. + #+unicode + (decoding-error t))
;;; Make-File-Source-Info -- Internal ;;; ;;; Given a list of pathnames, return a Source-Info structure. ;;; -(defun make-file-source-info (files external-format) +(defun make-file-source-info (files external-format decoding-error) (declare (list files)) (let ((file-info (mapcar #'(lambda (x) @@ -739,7 +744,9 @@ :current-file file-info #+unicode :external-format #+unicode (stream::ef-name - (stream::find-external-format external-format))))) + (stream::find-external-format external-format)) + #+unicode :decoding-error + #+unicode decoding-error)))
;;; MAKE-LISP-SOURCE-INFO -- Interface @@ -880,7 +887,9 @@ (setf (source-info-stream info) (open name :direction :input #+unicode :external-format - #+unicode (source-info-external-format info))))))) + #+unicode (source-info-external-format info) + #+unicode :decoding-error + #+unicode (source-info-decoding-error info)))))))
;;; CLOSE-SOURCE-INFO -- Internal ;;; @@ -1744,6 +1753,7 @@ (error-output t) (load nil) (external-format :default) + (decoding-error t) ((:verbose *compile-verbose*) *compile-verbose*) ((:print *compile-print*) *compile-print*) ((:progress *compile-progress*) *compile-progress*) @@ -1796,7 +1806,12 @@ If non-NIL, enable recording of cross-reference information. The default is the value of C:*RECORD-XREF-INFO* :External-Format - The external format to use when opening the source file" + The external format to use when opening the source file + :Decoding-Error + How to handle decoding errors in the external format when reading the + source file. Default (T) is to signal an error. Nil means silently + continue, replacing the invalid sequence with a suitable replacment + character." (let* ((fasl-file nil) (error-file-stream nil) (output-file-pathname nil) @@ -1805,7 +1820,7 @@ (compile-won nil) (error-severity nil) (source (verify-source-files source)) - (source-info (make-file-source-info source external-format)) + (source-info (make-file-source-info source external-format decoding-error)) (default (pathname (first source)))) (unwind-protect (progn Index: src/general-info/release-20c.txt diff -u src/general-info/release-20c.txt:1.3 src/general-info/release-20c.txt:1.4 --- src/general-info/release-20c.txt:1.3 Fri Sep 17 12:01:05 2010 +++ src/general-info/release-20c.txt Fri Sep 24 08:12:05 2010 @@ -20,11 +20,20 @@
* Known issues:
- * Feature enhancements: + * Feature enhancements - Update to Unicode 5.2.0. - Add support for character name completion. This can be used by Slime to do character name completion.
+ * Changes + - COMPILE-FILE now accepts a :DECODING-ERROR argument that + indicates how to handle decoding errors when reading the file. + It has the same meaning and effect as the :DECODING-ERROR + argument to OPEN. This defaults to T here so that decoding + errors are signaled on invalid sequences instead of silently + replacing the bad sequence with some kind of replacement + character. + * ANSI compliance fixes:
* Bugfixes: