: superclass. ( class -- )
superclass dup tuple eq? [ drop ] [ "<" text pprint-word ] if ;
-M: tuple-class see-class*
- <colon \ TUPLE: pprint-word
+: pprint-tuple-class ( class definer -- )
+ <colon pprint-word
{
[ pprint-word ]
[ superclass. ]
} cleave
block> ;
+M: tuple-class see-class*
+ \ TUPLE: pprint-tuple-class ;
+
+M: error-class see-class* ( class -- )
+ \ ERROR: pprint-tuple-class ;
+
M: word see-class* drop ;
M: builtin-class see-class*
3dup tuple-class-unchanged?
[ 2drop ?define-symbol ] [ redefine-tuple-class ] if ;
+PREDICATE: error-class < tuple-class
+ "error-class" word-prop ;
+
: define-error-class ( class superclass slots -- )
- error-slots
- [ define-tuple-class ]
- [ 2drop reset-generic ]
- [
- 2drop
- [ dup [ boa throw ] curry ]
- [ all-slots thrower-effect ]
- bi define-declared
- ] 3tri ;
+ error-slots {
+ [ define-tuple-class ]
+ [ 2drop reset-generic ]
+ [ 2drop t "error-class" set-word-prop ]
+ [
+ 2drop
+ [ dup [ boa throw ] curry ]
+ [ all-slots thrower-effect ]
+ bi define-declared
+ ]
+ } 3cleave ;
: boa-effect ( class -- effect )
[ all-slots [ name>> ] map ] [ name>> 1array ] bi <effect> ;