diff --git a/basis/stack-checker/inlining/inlining.factor b/basis/stack-checker/inlining/inlining.factor index c83f609868..fd49fa73f0 100644 --- a/basis/stack-checker/inlining/inlining.factor +++ b/basis/stack-checker/inlining/inlining.factor @@ -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 -- )