diff --git a/basis/help/lint/checks/checks.factor b/basis/help/lint/checks/checks.factor index e5f3a93e4a..8e3d73487d 100644 --- a/basis/help/lint/checks/checks.factor +++ b/basis/help/lint/checks/checks.factor @@ -1,10 +1,11 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs classes classes.struct -classes.tuple combinators combinators.short-circuit debugger -definitions effects eval formatting fry grouping help -help.markup help.topics io io.streams.string kernel macros math -namespaces sequences sequences.deep sets splitting strings +classes.tuple combinators combinators.short-circuit +combinators.smart continuations debugger definitions effects +eval formatting fry grouping help help.markup help.topics io +io.streams.string kernel macros math namespaces parser.notes +prettyprint sequences sequences.deep sets splitting strings summary tools.destructors unicode vocabs vocabs.loader words words.constant words.symbol ; IN: help.lint.checks @@ -28,12 +29,23 @@ SYMBOL: vocab-articles } member? ] reject ; +: eval-with-stack ( str -- output ) + [ + [ + parser-quiet? on parse-string [ + output>array [ + nl "--- Data stack:" print stack. + ] unless-empty + ] call( quot -- ) + ] [ nip print-error ] recover + ] with-string-writer ; + : check-example ( element -- ) [ '[ _ rest [ but-last "\n" join - [ (eval>string) ] call( code -- output ) + eval-with-stack "\n" ?tail drop ] keep last assert=