tweak recursive call site checking to consider declared-effects equivalent to their wrapped values
parent
339cc8f04e
commit
63ad397cc1
|
@ -119,9 +119,15 @@ SYMBOL: enter-out
|
||||||
: trimmed-enter-out ( label -- stack )
|
: trimmed-enter-out ( label -- stack )
|
||||||
dup enter-out>> trim-stack ;
|
dup enter-out>> trim-stack ;
|
||||||
|
|
||||||
|
GENERIC: (undeclared-known) ( value -- known )
|
||||||
|
M: object (undeclared-known) ;
|
||||||
|
M: declared-effect (undeclared-known) value>> known (undeclared-known) ;
|
||||||
|
|
||||||
|
: undeclared-known ( value -- known ) known (undeclared-known) ;
|
||||||
|
|
||||||
: check-call-site-stack ( label -- )
|
: check-call-site-stack ( label -- )
|
||||||
[ ] [ call-site-stack ] [ trimmed-enter-out ] tri
|
[ ] [ call-site-stack ] [ trimmed-enter-out ] tri
|
||||||
[ dup known [ [ known ] bi@ = ] [ 2drop t ] if ] 2all?
|
[ dup undeclared-known [ [ undeclared-known ] bi@ = ] [ 2drop t ] if ] 2all?
|
||||||
[ drop ] [ word>> inconsistent-recursive-call-error inference-error ] if ;
|
[ drop ] [ word>> inconsistent-recursive-call-error inference-error ] if ;
|
||||||
|
|
||||||
: check-call ( label -- )
|
: check-call ( label -- )
|
||||||
|
|
Loading…
Reference in New Issue