summaryrefslogtreecommitdiff
path: root/Lisp/conditions.lisp
blob: 86897bacd8173dbe8af2c6596fe032c1169fbc56 (plain)
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
30
31
32
33
34
35
36
(in-package #:mulk.objective-cl)


(define-condition simple-style-warning (style-warning)
  ((format-control :initarg :format-control
                   :reader format-control)
   (format-arguments :initarg :format-arguments
                     :reader format-arguments))
  (:report (lambda (condition stream)
             (apply #'format
                    stream
                    (format-control condition)
                    (format-arguments condition)))))


(define-condition no-such-selector (error)
  ((designator :initarg :designator
               :reader rejected-selector-designator))
  (:report (lambda (condition stream)
             ;; The CLHS forbids the use of WITH-SLOTS for conditions.
             (format stream
                     "~S does not designate a known selector."
                     (rejected-selector-designator condition)))))


(define-condition message-not-understood (error)
  ((selector :initarg :selector
             :reader rejected-selector)
   (class :initarg :class
          :reader rejecting-class))
  (:report (lambda (condition stream)
             (format stream
                     "The Objective-C class ~S does not understand the ~
                         message ~S."
                     (rejecting-class condition)
                     (rejected-selector condition)))))