From: Christophe R. <cr...@us...> - 2005-11-04 11:18:51
|
Update of /cvsroot/sbcl/sbcl/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26248/tests Added Files: mop-10.impure-cload.lisp Log Message: 0.9.6.15: Make REINITIALIZE-INSTANCE on generic functions always call COMPUTE-DISCRIMINATING-FUNCTION, as required by AMOP. --- NEW FILE: mop-10.impure-cload.lisp --- ;;;; miscellaneous side-effectful tests of the MOP ;;;; This software is part of the SBCL system. See the README file for ;;;; more information. ;;;; ;;;; While most of SBCL is derived from the CMU CL system, the test ;;;; files (like this one) were written from scratch after the fork ;;;; from CMU CL. ;;;; ;;;; This software is in the public domain and is provided with ;;;; absolutely no warranty. See the COPYING and CREDITS files for ;;;; more information. ;;; this file contains tests of REINITIALIZE-INSTANCE on generic ;;; functions. (defpackage "MOP-10" (:use "CL" "SB-MOP" "TEST-UTIL")) (in-package "MOP-10") (defclass my-generic-function (standard-generic-function) () (:metaclass funcallable-standard-class)) (defgeneric foo (x) (:method-combination list) (:method list ((x float)) (* x x)) (:method list ((x integer)) (1+ x)) (:method list ((x number)) (expt x 2)) (:generic-function-class my-generic-function)) (assert (equal (foo 3) '(4 9))) (defmethod compute-discriminating-function ((gf my-generic-function)) (let ((orig (call-next-method))) (lambda (&rest args) (let ((orig-result (apply orig args))) (cons gf (reverse orig-result)))))) (assert (equal (foo 3) '(4 9))) (reinitialize-instance #'foo) (assert (equal (foo 3) (cons #'foo '(9 4)))) |