From c071421b01be4e06118e771ed9e9c53b5b30860d Mon Sep 17 00:00:00 2001 From: ram <ram> Date: Thu, 10 Dec 1992 16:48:17 +0000 Subject: [PATCH] Allow non-keyword keyword names when the &key keyword is specified separately from the variable. --- compiler/ir1tran.lisp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/compiler/ir1tran.lisp b/compiler/ir1tran.lisp index f59ef5c80..374a37f15 100644 --- a/compiler/ir1tran.lisp +++ b/compiler/ir1tran.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir1tran.lisp,v 1.82 1992/12/08 17:59:14 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir1tran.lisp,v 1.83 1992/12/10 16:48:17 ram Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1203,10 +1203,11 @@ ;;; already used by one of the Vars. We also check that the keyword isn't the ;;; magical :allow-other-keys. ;;; -(proclaim '(function make-keyword (symbol list) keyword)) -(defun make-keyword (symbol vars) - (let ((key (if (keywordp symbol) symbol - (intern (symbol-name symbol) "KEYWORD")))) +(proclaim '(function make-keyword (symbol list t) keyword)) +(defun make-keyword (symbol vars keywordify) + (let ((key (if (and keywordify (not (keywordp symbol))) + (intern (symbol-name symbol) "KEYWORD") + symbol))) (when (eq key :allow-other-keys) (compiler-error "You can't have a keyword arg called :allow-other-keys.")) (dolist (var vars) @@ -1287,14 +1288,15 @@ (let ((var (varify-lambda-arg spec (names-so-far)))) (setf (lambda-var-arg-info var) (make-arg-info :kind :keyword - :keyword (make-keyword spec (vars)))) + :keyword (make-keyword spec (vars) t))) (vars var) (names-so-far spec))) ((atom (first spec)) (let* ((name (first spec)) (var (varify-lambda-arg name (names-so-far))) - (info (make-arg-info :kind :keyword - :keyword (make-keyword name (vars))))) + (info (make-arg-info + :kind :keyword + :keyword (make-keyword name (vars) t)))) (setf (lambda-var-arg-info var) info) (vars var) (names-so-far name) @@ -1305,9 +1307,9 @@ (error "Malformed keyword arg specifier: ~S." spec)) (let* ((name (second head)) (var (varify-lambda-arg name (names-so-far))) - (info (make-arg-info :kind :keyword - :keyword (make-keyword (first head) - (vars))))) + (info (make-arg-info + :kind :keyword + :keyword (make-keyword (first head) (vars) nil)))) (setf (lambda-var-arg-info var) info) (vars var) (names-so-far name) -- GitLab