aboutsummaryrefslogtreecommitdiff
path: root/src/property.lisp
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-05-06 11:15:05 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-05-06 12:51:02 -0700
commit052d673c61ed41e934db363e5a472fa28d9e6c65 (patch)
tree54eb8b703982b91476706da72a9996a855428bbb /src/property.lisp
parentb63cfe82744e4934a7fcbc53562b8ba06ba866aa (diff)
downloadconsfigurator-052d673c61ed41e934db363e5a472fa28d9e6c65.tar.gz
DEFPROPSPEC :APPLY subroutine: check the propapp type
If the DEFPROPSPEC code returns a propspec expression including forms obtained by calling other functions, it is useful to check that the declared type for the whole DEFPROPSPEC is correct. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/property.lisp')
-rw-r--r--src/property.lisp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/property.lisp b/src/property.lisp
index 6c35a96..3571a68 100644
--- a/src/property.lisp
+++ b/src/property.lisp
@@ -370,7 +370,9 @@ You can usually use DEFPROPLIST instead of DEFPROPSPEC, which see."
(list (list :propspec nil :orig-args args))))
(setf (getf slots :apply)
'(lambda (plist)
- (propappapply (eval-propspec (getf plist :propspec)))))
+ (let ((propapp (eval-propspec (getf plist :propspec))))
+ (assert-connection-supports (propapptype propapp))
+ (propappapply propapp))))
(setf (getf slots :unapply)
'(lambda (plist)
(propappunapply (eval-propspec (getf plist :propspec)))))