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