+;;;; coverage.scm
+
(define-module (scm coverage))
(use-modules (lily)
(ice-9 rdelim)
(ice-9 regex)
- (ice-9 format))
+ (ice-9 format) ;; needed for ~8@
+ )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-public (coverage:show-all filter?)
-
+ (let*
+ ((keys
+ (filter filter?
+ (sort (map car (hash-table->alist coverage-table)) string<? ))))
+
(newline)
- (hash-fold
- (lambda (key val acc)
- (if (filter? key)
- (begin
- (format #t
- "
-Coverage for file: ~a
-"
- key)
- (display-coverage key val
- (format #f "~a.cov" (basename key))
- )))
- #t)
- #t
- coverage-table))
+ (for-each
+ (lambda (k)
+
+ (format #t "Coverage for file: ~a\n" k)
+ (display-coverage
+ k (hash-ref coverage-table k)
+ (format #f "~a.cov" (basename k))))
+ keys)))
+
(define-public (coverage:enable)
(trap-set! memoize-symbol-handler record-coverage)
(let*
((name (source-property exp 'filename))
(line (source-property exp 'line))
- (vec (and name (hashv-ref coverage-table name #f)))
+ (vec (and name (hash-ref coverage-table name #f)))
(veclen (and vec (vector-length vec)))
(veccopy (lambda (src dst)
(vector-move-left! src 0 (vector-length src)
(begin
(if (or (not vec) (>= line (vector-length vec)))
(set! vec
- (hashv-set! coverage-table name
+ (hash-set! coverage-table name
(if vec
(veccopy vec (make-vector (1+ line) #f))
(make-vector (1+ line) #f)))))