X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcondition.lisp;h=f1e6e0d65f5dc8c5f830e4cead4367ee30e36519;hb=35697e2c02e7b29f7953ae318d50305561927a16;hp=5cae133926ef2f8ee6f223982f43d479f52d10d1;hpb=b86f43bae31f775d834c724e21f0f573b968f695;p=sbcl.git diff --git a/src/code/condition.lisp b/src/code/condition.lisp index 5cae133..f1e6e0d 100644 --- a/src/code/condition.lisp +++ b/src/code/condition.lisp @@ -19,7 +19,7 @@ ;;; generally a PITA, so whatever the failure encountered when ;;; wondering about FILE-POSITION within a condition printer, 'tis ;;; better silently to give up than to try to complain. -(defun file-position-or-nil-for-error (stream) +(defun file-position-or-nil-for-error (stream &optional (pos nil posp)) ;; Arguably FILE-POSITION shouldn't be signalling errors at all; but ;; "NIL if this cannot be determined" in the ANSI spec doesn't seem ;; absolutely unambiguously to prohibit errors when, e.g., STREAM @@ -29,7 +29,9 @@ ;; defsystemish operation where the ERROR-STREAM had been CL:CLOSEd, ;; I think by nonlocally exiting through a WITH-OPEN-FILE, by the ;; time an error was reported.) - (ignore-errors (file-position stream))) + (if posp + (ignore-errors (file-position stream pos)) + (ignore-errors (file-position stream)))) ;;;; the CONDITION class @@ -913,6 +915,11 @@ (define-condition extension-failure (reference-condition simple-error) ()) +(define-condition structure-initarg-not-keyword + (reference-condition simple-style-warning) + () + (:default-initargs :references (list '(:ansi-cl :section (2 4 8 13))))) + #!+sb-package-locks (progn @@ -956,11 +963,20 @@ SB-EXT:PACKAGE-LOCKED-ERROR-SYMBOL.")) ) ; progn -(define-condition undefined-alien-error (error) () +(define-condition undefined-alien-error (error) ()) + +(define-condition undefined-alien-variable-error (undefined-alien-error) () + (:report + (lambda (condition stream) + (declare (ignore condition)) + (format stream "Attempt to access an undefined alien variable.")))) + +(define-condition undefined-alien-function-error (undefined-alien-error) () (:report (lambda (condition stream) (declare (ignore condition)) - (format stream "Attempt to access an undefined alien value.")))) + (format stream "Attempt to call an undefined alien function.")))) + ;;;; various other (not specified by ANSI) CONDITIONs ;;;;