From d60336807e8b6b50ed1f6b6c56bc944676776119 Mon Sep 17 00:00:00 2001 From: dtc <dtc> Date: Fri, 3 Dec 1999 16:24:57 +0000 Subject: [PATCH] Fix define-predicate for list based structures. The predicates were generating an error when passed a Nil argument due to an attempt to use ELT to access the name; the name is now accessed via NTH for list based structures. --- code/defstruct.lisp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/defstruct.lisp b/code/defstruct.lisp index 4690f99b7..8e12e26b5 100644 --- a/code/defstruct.lisp +++ b/code/defstruct.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defstruct.lisp,v 1.69 1999/09/23 16:14:42 dtc Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defstruct.lisp,v 1.70 1999/12/03 16:24:57 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1111,11 +1111,13 @@ (let ((name (dd-name defstruct)) (pred (dd-predicate defstruct))) (when (and pred (dd-named defstruct)) - (let ((ltype (dd-lisp-type defstruct))) + (let ((ltype (dd-lisp-type defstruct)) + (index (cdr (car (last (find-name-indices defstruct)))))) `((defun ,pred (object) (and (typep object ',ltype) - (eq (elt (the ,ltype object) - ,(cdr (car (last (find-name-indices defstruct))))) + (eq ,(if (eq ltype 'list) + `(nth ,index object) + `(elt object ,index)) ',name)))))))) -- GitLab