fix stack effect of ERROR: words that inherit slots from a base class
parent
302b0a3a10
commit
92e864b019
|
@ -729,3 +729,8 @@ DEFER: redefine-tuple-twice
|
|||
[ ] [ "IN: classes.tuple.tests TUPLE: redefine-tuple-twice ;" eval( -- ) ] unit-test
|
||||
|
||||
[ t ] [ \ redefine-tuple-twice symbol? ] unit-test
|
||||
|
||||
ERROR: base-error x y ;
|
||||
ERROR: derived-error < base-error z ;
|
||||
|
||||
[ (( x y z -- * )) ] [ \ derived-error stack-effect ] unit-test
|
||||
|
|
|
@ -280,16 +280,16 @@ M: tuple-class (define-tuple-class)
|
|||
[ 2drop ?define-symbol ] [ redefine-tuple-class ] if ;
|
||||
|
||||
: thrower-effect ( slots -- effect )
|
||||
[ dup array? [ first ] when ] map { "*" } <effect> ;
|
||||
[ name>> ] map { "*" } <effect> ;
|
||||
|
||||
: define-error-class ( class superclass slots -- )
|
||||
[ define-tuple-class ]
|
||||
[ 2drop reset-generic ]
|
||||
[
|
||||
2drop
|
||||
[ dup [ boa throw ] curry ]
|
||||
[ drop ]
|
||||
[ thrower-effect ]
|
||||
tri* define-declared
|
||||
[ all-slots thrower-effect ]
|
||||
bi define-declared
|
||||
] 3tri ;
|
||||
|
||||
: boa-effect ( class -- effect )
|
||||
|
|
Loading…
Reference in New Issue