From b1c0a1be333362bff2c9f20c2284d416d57053fe Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 5 May 2017 08:40:47 -0700 Subject: [PATCH] help.lint.checks: improve check-example to print the stack (if any). Any output from the example will be preserved like it currently is, and any objects on the stack will be printed the same way they are in the listener prefixed by ``--- Data stack:``. --- basis/help/lint/checks/checks.factor | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) 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=