From 29193f72ababb585e5da518f98759f5d5f833957 Mon Sep 17 00:00:00 2001 From: Richard M Kreuter Date: Wed, 16 Jul 2008 17:30:01 +0000 Subject: [PATCH] 1.0.18.19: Fix FUNCTION-KEYWORDS, re-add FUNCTION-KEYWORD-PARAMETERS. * Recently-renamed FUNCTION-KEYWORD-PARAMETERS did something different than what FUNCTION-KEYWORDS is supposed to do. Fix FUNCTION-KEYWORDS, and re-add a distinct FUNCTION-KEYWORD-PARAMETERS (used indirectly by DESCRIBE, something in sb-introspect, maybe elsewhere). --- src/pcl/generic-functions.lisp | 2 ++ src/pcl/methods.lisp | 11 ++++++++++- version.lisp-expr | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pcl/generic-functions.lisp b/src/pcl/generic-functions.lisp index e0ed65a..7d92d9a 100644 --- a/src/pcl/generic-functions.lisp +++ b/src/pcl/generic-functions.lisp @@ -259,6 +259,8 @@ (defgeneric function-keywords (method)) +(defgeneric function-keyword-parameters (method)) + (defgeneric generic-function-argument-precedence-order (gf)) (defgeneric generic-function-lambda-list (gf)) diff --git a/src/pcl/methods.lisp b/src/pcl/methods.lisp index 52d9ece..35f2c35 100644 --- a/src/pcl/methods.lisp +++ b/src/pcl/methods.lisp @@ -1624,6 +1624,15 @@ (early-method-lambda-list method) (method-lambda-list method))) (declare (ignore nreq nopt keysp restp keywords)) + (values keywords allow-other-keys-p))) + +(defmethod function-keyword-parameters ((method standard-method)) + (multiple-value-bind (nreq nopt keysp restp allow-other-keys-p + keywords keyword-parameters) + (analyze-lambda-list (if (consp method) + (early-method-lambda-list method) + (method-lambda-list method))) + (declare (ignore nreq nopt keysp restp keywords)) (values keyword-parameters allow-other-keys-p))) (defun method-ll->generic-function-ll (ll) @@ -1658,7 +1667,7 @@ (let ((methods.keys nil) (methods.allowp nil)) (dolist (m methods) (multiple-value-bind (m.keyparams m.allow-other-keys) - (function-keywords m) + (function-keyword-parameters m) (setq methods.keys (union methods.keys m.keyparams :key #'maybe-car)) (setq methods.allowp (or methods.allowp m.allow-other-keys)))) (let ((arglist '())) diff --git a/version.lisp-expr b/version.lisp-expr index 29808c2..be751d8 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.18.18" +"1.0.18.19" -- 1.7.10.4