diff --git a/basis/stack-checker/errors/errors.factor b/basis/stack-checker/errors/errors.factor index d476de84c5..ff06b2ac27 100644 --- a/basis/stack-checker/errors/errors.factor +++ b/basis/stack-checker/errors/errors.factor @@ -30,8 +30,6 @@ ERROR: unbalanced-recursion-error < inference-error word height ; ERROR: inconsistent-recursive-call-error < inference-error word ; -ERROR: unknown-primitive-error < inference-error ; - ERROR: transform-expansion-error < inference-error error continuation word ; ERROR: bad-declaration-error < inference-error declaration ; \ No newline at end of file diff --git a/basis/stack-checker/errors/prettyprint/prettyprint.factor b/basis/stack-checker/errors/prettyprint/prettyprint.factor index 433c11d34c..f762e0559b 100644 --- a/basis/stack-checker/errors/prettyprint/prettyprint.factor +++ b/basis/stack-checker/errors/prettyprint/prettyprint.factor @@ -50,9 +50,6 @@ M: inconsistent-recursive-call-error summary "The recursive word " " calls itself with a different set of quotation parameters than were input" surround ; -M: unknown-primitive-error summary - drop "The do-primitive word cannot be called from here" ; - M: transform-expansion-error summary word>> name>> "Macro expansion of " " threw an error" surround ; diff --git a/basis/stack-checker/known-words/known-words.factor b/basis/stack-checker/known-words/known-words.factor index bdf2cc65ed..d7556adaa0 100644 --- a/basis/stack-checker/known-words/known-words.factor +++ b/basis/stack-checker/known-words/known-words.factor @@ -13,7 +13,7 @@ words.private definitions assocs summary compiler.units system.private combinators combinators.short-circuit locals locals.backend locals.types combinators.private stack-checker.values generic.single generic.single.private -alien.libraries tools.dispatch.private tools.profiler.private +alien.libraries tools.dispatch.private tools.profiler.private vm stack-checker.alien stack-checker.state stack-checker.errors @@ -221,8 +221,6 @@ M: bad-executable summary dup '[ _ infer-call-effect ] "special" set-word-prop ] each -\ do-primitive [ unknown-primitive-error ] "special" set-word-prop - \ if [ infer-if ] "special" set-word-prop \ dispatch [ infer-dispatch ] "special" set-word-prop @@ -231,6 +229,22 @@ M: bad-executable summary \ alien-assembly [ infer-alien-assembly ] "special" set-word-prop \ alien-callback [ infer-alien-callback ] "special" set-word-prop +{ + do-primitive + mega-cache-miss + mega-cache-lookup + inline-cache-miss + inline-cache-miss-tail + unwind-native-frames + set-datastack + set-callstack + set-retainstack + unwind-native-frames + lazy-jit-compile + c-to-factor + call-clear +} [ dup '[ _ do-not-compile ] "special" set-word-prop ] each + : infer-special ( word -- ) [ current-word set ] [ "special" word-prop call( -- ) ] bi ; @@ -722,3 +736,9 @@ M: bad-executable summary \ (identity-hashcode) { object } { fixnum } define-primitive \ compute-identity-hashcode { object } { } define-primitive + +\ (exit) { integer } { } define-primitive + +\ vm-ptr { } { alien } define-primitive + +\ quot-compiled? { quotation } { object } define-primitive diff --git a/basis/stack-checker/stack-checker-tests.factor b/basis/stack-checker/stack-checker-tests.factor index 8a0724556e..270e5695b3 100644 --- a/basis/stack-checker/stack-checker-tests.factor +++ b/basis/stack-checker/stack-checker-tests.factor @@ -7,7 +7,7 @@ sorting assocs definitions prettyprint io inspector classes.tuple classes.union classes.predicate debugger threads.private io.streams.string io.timeouts io.thread sequences.private destructors combinators eval locals.backend -system compiler.units shuffle ; +system compiler.units shuffle vocabs ; IN: stack-checker.tests [ 1234 infer ] must-fail @@ -392,5 +392,13 @@ DEFER: eee' [ [ call-effect ] infer ] [ T{ unknown-macro-input f call-effect } = ] must-fail-with [ [ execute-effect ] infer ] [ T{ unknown-macro-input f execute-effect } = ] must-fail-with -[ \ set-datastack def>> infer ] [ T{ unknown-primitive-error } = ] must-fail-with +[ \ set-datastack def>> infer ] [ T{ do-not-compile f do-primitive } = ] must-fail-with [ ] [ [ \ set-datastack def>> infer ] try ] unit-test + +! Make sure all primitives are covered +[ { } ] [ + all-words [ primitive? ] filter + [ "default-output-classes" word-prop not ] filter + [ "special" word-prop not ] filter + [ "shuffle" word-prop not ] filter +] unit-test