147 |
y) |
y) |
148 |
|
|
149 |
|
|
150 |
|
;;; A test showing nonmonotonicity in the CLOS CPL algorithm |
151 |
|
|
152 |
|
(defclass class-0306a () ((a :initform nil :reader a-slot))) |
153 |
|
(defclass class-0306b (class-0306a) ((a :initform 'x))) |
154 |
|
(defclass class-0306c (class-0306a) ((a :initform 'y))) |
155 |
|
(defclass class-0306d (class-0306b) ()) |
156 |
|
(defclass class-0306e (class-0306b) ()) |
157 |
|
(defclass class-0306f (class-0306d class-0306c) ()) |
158 |
|
(defclass class-0306g (class-0306e) ()) |
159 |
|
(defclass class-0306h (class-0306f class-0306g) ()) |
160 |
|
|
161 |
|
;;; Class class-0306c should precede class-0306b in the |
162 |
|
;;; CPL for class-0306h, even though it follows it in the CPLs |
163 |
|
;;; for the direct superclasses of class-0306h. |
164 |
|
|
165 |
|
(deftest class-0306.1 |
166 |
|
(loop for obj in |
167 |
|
(mapcar #'make-instance |
168 |
|
'(class-0306a class-0306b class-0306c class-0306d |
169 |
|
class-0306e class-0306f class-0306g class-0306h)) |
170 |
|
collect (slot-value obj 'a)) |
171 |
|
(nil x y x x x x y)) |
172 |
|
|
173 |
|
(deftest class-0306.2 |
174 |
|
(loop for obj in |
175 |
|
(mapcar #'make-instance |
176 |
|
'(class-0306a class-0306b class-0306c class-0306d |
177 |
|
class-0306e class-0306f class-0306g class-0306h)) |
178 |
|
collect (a-slot obj)) |
179 |
|
(nil x y x x x x y)) |
180 |
|
|