tweak recursive call site checking to consider declared-effects equivalent to their wrapped values

db4
Joe Groff 2010-03-07 11:55:47 -08:00
parent 339cc8f04e
commit 63ad397cc1
1 changed files with 7 additions and 1 deletions

View File

@ -119,9 +119,15 @@ SYMBOL: enter-out
: trimmed-enter-out ( label -- 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 -- )
[ ] [ 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 ;
: check-call ( label -- )