File: partial-initargs.lisp

package info (click to toggle)
cl-contextl 1%3A20231021.git3d5fbff-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 336 kB
  • sloc: lisp: 3,148; makefile: 2
file content (29 lines) | stat: -rw-r--r-- 720 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(asdf:load-system :contextl)

(in-package :contextl-user)

(defclass serializable-class (standard-class)
  ((database :initarg :database)))

(defclass combined-class (layered-class serializable-class) 
  ())

(defmethod validate-superclass ((class combined-class) (superclass standard-class)) 
  t)

(defmethod partial-class-base-initargs append ((class combined-class))
  '(:database))

(defclass try ()
  ()
  (:metaclass combined-class)
  (:database . "mydb"))

(finalize-inheritance (find-class 'try))

(assert (string= (slot-value (find-class 'try) 'database) "mydb"))

(assert (loop for class in (rest (class-precedence-list (find-class 'try)))
              never (slot-exists-p class 'database)))

(print :done)