 USING: accessors arrays assocs classes combinators.short-circuit
 continuations fry io kernel math namespaces prettyprint
 quotations sequences sequences.deep splitting strings
-tools.annotations tools.test.private vocabs vocabs.hierarchy
-words words.symbol ;
+tools.annotations tools.test.private vocabs words words.symbol ;
 IN: tools.coverage
 
 TUPLE: coverage-state < identity-tuple executed? ;

    [ dup coverage 2array ] map-words ;

M: word coverage ( word -- seq )
    "coverage" word-prop >alist
    [ drop executed?>> ] assoc-reject values ;

GENERIC: coverage. ( object -- )

    [ count-callables ] map-words sum ;

M: word count-callables
    def>> 0 [ callable? [ 1 + ] when ] deep-reduce ;

PRIVATE>

