summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lisp/compiler-macros.lisp6
-rw-r--r--Lisp/conditions.lisp29
-rw-r--r--objective-cl.asd3
3 files changed, 25 insertions, 13 deletions
diff --git a/Lisp/compiler-macros.lisp b/Lisp/compiler-macros.lisp
index ba29c2d..2661687 100644
--- a/Lisp/compiler-macros.lisp
+++ b/Lisp/compiler-macros.lisp
@@ -15,7 +15,7 @@
(serious-condition ()
(warn
(make-condition
- 'style-warning
+ 'simple-style-warning
:format-control
"~S designates an unknown ~
method selector."
@@ -38,7 +38,7 @@
(selector ,method-name)
(serious-condition ()
(warn
- (make-condition 'style-warning
+ (make-condition 'simple-style-warning
:format-control
"~S designates an unknown ~
method selector."
@@ -60,7 +60,7 @@
(selector ',method-name)
(serious-condition ()
(warn
- (make-condition 'style-warning
+ (make-condition 'simple-style-warning
:format-control
"~S designates an unknown ~
method selector."
diff --git a/Lisp/conditions.lisp b/Lisp/conditions.lisp
index 839838e..86897ba 100644
--- a/Lisp/conditions.lisp
+++ b/Lisp/conditions.lisp
@@ -1,14 +1,26 @@
(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)
- (with-slots (designator) condition
- (format stream
- "~S does not designate a known selector."
- designator)))))
+ ;; 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)
@@ -17,9 +29,8 @@
(class :initarg :class
:reader rejecting-class))
(:report (lambda (condition stream)
- (with-slots (selector class) condition
- (format stream
- "The Objective-C class ~S does not understand the ~
+ (format stream
+ "The Objective-C class ~S does not understand the ~
message ~S."
- class
- selector)))))
+ (rejecting-class condition)
+ (rejected-selector condition)))))
diff --git a/objective-cl.asd b/objective-cl.asd
index 1b725d5..8f66cab 100644
--- a/objective-cl.asd
+++ b/objective-cl.asd
@@ -44,5 +44,6 @@
"method-invocation"
"data-types"))
(:file "compiler-macros" :depends-on ("defpackage"
- "method-invocation")))))
+ "method-invocation"
+ "conditions")))))
:serial t)