From e76ddf242a31a2acaae3a9cb818fa31500ebbf92 Mon Sep 17 00:00:00 2001 From: William Harold Newman Date: Sat, 28 Dec 2002 20:52:47 +0000 Subject: [PATCH] 0.7.10.34: new BUGS entry re. (I assume) 0.7.10.31 ctor.lisp stuff trivial OAOO tweak on 0.7.10.32 code --- BUGS | 17 +++++++++++++++++ src/code/early-extensions.lisp | 10 ++++++++-- src/compiler/ir1opt.lisp | 7 ++----- tests/clocc-ansi-test-known-bugs.lisp | 1 + 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/BUGS b/BUGS index a90c4a5..d023a79 100644 --- a/BUGS +++ b/BUGS @@ -1205,6 +1205,23 @@ WORKAROUND: (see usage of CONTINUATION-ASSERTED-TYPE in USE-RESULT-CONSTRAINTS) +234: + clocc-ansi-test :EXCEPSIT-LEGACY-1277 fails in sbcl-0.7.10.33 + + In sbcl-0.7.10.33 (but not ca. 0.7.10.29), + (defclass foo54 () ()) + (reinitialize-instance (make-instance 'foo54) :dummy 0) + does not signal an error. ANSI's definition of REINITIALIZE-INSTANCE + says + The system-supplied primary method for REINITIALIZE-INSTANCE signals + an error if an initarg is supplied that is not declared as valid. + and defines what that means in + 7.1.2 Declaring the Validity of Initialization Arguments + In effect, even though the signature shown for the REINITIALIZE-INSTANCE + gf in its ANSI definition page is &ALLOW-OTHER-KEYS, and that might + make it look as though anything goes, the gf+methods ensemble is required + to have more complicated &KEY-checking behavior than that. + DEFUNCT CATEGORIES OF BUGS IR1-#: These labels were used for bugs related to the old IR1 interpreter. diff --git a/src/code/early-extensions.lisp b/src/code/early-extensions.lisp index a23f10f..a3c401c 100644 --- a/src/code/early-extensions.lisp +++ b/src/code/early-extensions.lisp @@ -619,8 +619,14 @@ :format-control "invalid function name: ~S" :format-arguments (list name)))) -;;; Given a function name, return the name for the BLOCK which -;;; encloses its body (e.g. in DEFUN, DEFINE-COMPILER-MACRO, or FLET). +;;; Given a function name, return the symbol embedded in it. +;;; +;;; The ordinary use for this operator (and the motivation for the +;;; name of this operator) is to convert from a function name to the +;;; name of the BLOCK which encloses its body. +;;; +;;; Occasionally the operator is useful elsewhere, where the operator +;;; name is less mnemonic. (Maybe it should be changed?) (declaim (ftype (function ((or symbol cons)) symbol) fun-name-block-name)) (defun fun-name-block-name (fun-name) (cond ((symbolp fun-name) diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 199f560..2badb1c 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -1303,11 +1303,8 @@ (global-var (case (global-var-kind leaf) (:global-function (let ((name (leaf-source-name leaf))) - (when (consp name) - (aver (eq (first name) 'setf)) - (setq name (second name))) - (eq (symbol-package name) - *cl-package*)))))))) + (eq (symbol-package (fun-name-block-name name)) + *cl-package*)))))))) ;;; If we have a non-set LET var with a single use, then (if possible) ;;; replace the variable reference's CONT with the arg continuation. diff --git a/tests/clocc-ansi-test-known-bugs.lisp b/tests/clocc-ansi-test-known-bugs.lisp index ad6aa37..3dfe47d 100644 --- a/tests/clocc-ansi-test-known-bugs.lisp +++ b/tests/clocc-ansi-test-known-bugs.lisp @@ -137,6 +137,7 @@ :EXCEPSIT-LEGACY-1201 :EXCEPSIT-LEGACY-1269 :EXCEPSIT-LEGACY-1273 + :EXCEPSIT-LEGACY-1277 :EXCEPSIT-LEGACY-1327 :EXCEPSIT-LEGACY-1357 :EXCEPSIT-LEGACY-1369 -- 1.7.10.4