From d7f4338e6f340a947746f9dc70b98681d146cd3a Mon Sep 17 00:00:00 2001 From: Philipp Marek Date: Thu, 22 Feb 2018 12:23:02 +0100 Subject: [PATCH] When a STRUCTURE spec has a package included, use the right predicate. --- src/pattern.lisp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pattern.lisp b/src/pattern.lisp index 8de682d..0a5838d 100644 --- a/src/pattern.lisp +++ b/src/pattern.lisp @@ -184,10 +184,12 @@ (structure-pattern-slot-names y)))) (defmethod constructor-pattern-make-destructor ((pattern structure-pattern) var) - (make-destructor :predicate-form `(,(symbolicate (structure-pattern-conc-name pattern) :p) ,var) - :accessor-forms (loop with conc-name = (structure-pattern-conc-name pattern) - for slot-name in (structure-pattern-slot-names pattern) - collect `(,(symbolicate conc-name slot-name) ,var)))) + (let* ((conc-name (structure-pattern-conc-name pattern)) + (*package* (symbol-package conc-name))) + ;; TODO: How about CONC-NAME and SLOT-NAME being in different packages? + (make-destructor :predicate-form `(,(symbolicate conc-name :p) ,var) + :accessor-forms (loop for slot-name in (structure-pattern-slot-names pattern) + collect `(,(symbolicate conc-name slot-name) ,var))))) ;;; Pattern Utilities