X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpcl%2Fboot.lisp;h=f141b1d2ffb0190531a2f1da56358d41d1936249;hb=3c5609fe910bae51ff885c8cfd4be879151e7489;hp=e88a9de97317aefaf039c85b0dc1d770eae838b3;hpb=1ae37c6f729950b6925275cea43546b701d8fde2;p=sbcl.git diff --git a/src/pcl/boot.lisp b/src/pcl/boot.lisp index e88a9de..f141b1d 100644 --- a/src/pcl/boot.lisp +++ b/src/pcl/boot.lisp @@ -239,7 +239,7 @@ bootstrapping. (compile-or-load-defgeneric ',fun-name)) (load-defgeneric ',fun-name ',lambda-list ,@initargs) ,@(mapcar #'expand-method-definition methods) - #',fun-name)))) + (fdefinition ',fun-name))))) (defun compile-or-load-defgeneric (fun-name) (proclaim-as-fun-name fun-name) @@ -437,14 +437,14 @@ bootstrapping. (mname `(,(if (eq (cadr initargs-form) :function) 'method 'fast-method) ,name ,@qualifiers ,specls)) - (mname-sym (intern (let ((*print-pretty* nil) - ;; (We bind *PACKAGE* to - ;; KEYWORD here as a way to - ;; force symbols to be printed - ;; with explicit package - ;; prefixes.) - (*package* *keyword-package*)) - (format nil "~S" mname))))) + (mname-sym (let ((*print-pretty* nil) + ;; (We bind *PACKAGE* to KEYWORD here + ;; as a way to force symbols to be + ;; printed with explicit package + ;; prefixes.) + (target *package*) + (*package* *keyword-package*)) + (format-symbol target "~S" mname)))) `(progn (defun ,mname-sym ,(cadr fn-lambda) ,@(cddr fn-lambda)) @@ -460,7 +460,7 @@ bootstrapping. `(list ,@(mapcar (lambda (specializer) (if (consp specializer) ``(,',(car specializer) - ,,(cadr specializer)) + ,,(cadr specializer)) `',specializer)) specializers)) unspecialized-lambda-list @@ -1252,6 +1252,14 @@ bootstrapping. (setq next-method-p-p t) form) ((eq (car form) 'setq) + ;; FIXME: this is possibly a little strong as + ;; conditions go. Ideally we would want to detect + ;; which, if any, of the method parameters are + ;; being set, and communicate that information to + ;; e.g. SPLIT-DECLARATIONS. However, the brute + ;; force method doesn't really cost much; a little + ;; loss of discrimination over IGNORED variables + ;; should be all. -- CSR, 2004-07-01 (setq setq-p t) form) ((and (eq (car form) 'function) @@ -1428,10 +1436,10 @@ bootstrapping. ;; failing that, to use a special ;; symbol prefix denoting privateness. ;; -- WHN 19991201 - (intern (format nil "FAST-~A" - (car method-spec)) - *pcl-package*))) - ,@(cdr method-spec)))) + (format-symbol *pcl-package* + "FAST-~A" + (car method-spec)))) + ,@(cdr method-spec)))) (set-fun-name mff name) (unless mf (set-mf-property :name name))))) @@ -1939,7 +1947,7 @@ bootstrapping. (let ((method-class (getf ,all-keys :method-class '.shes-not-there.))) (unless (eq method-class '.shes-not-there.) (setf (getf ,all-keys :method-class) - (find-class method-class t ,env)))))) + (find-class method-class t ,env)))))) (defun real-ensure-gf-using-class--generic-function (existing