From bec8061709cb63230ab2550489359714a2143e09 Mon Sep 17 00:00:00 2001 From: Spencer Florence Date: Mon, 30 Mar 2015 22:16:14 -0400 Subject: [PATCH] cherrying --- private/format-utils.rkt | 24 ++++++++++++++++++++---- tests/main.rkt | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/private/format-utils.rkt b/private/format-utils.rkt index ad9fec4..839c225 100644 --- a/private/format-utils.rkt +++ b/private/format-utils.rkt @@ -8,6 +8,7 @@ racket/set racket/bool syntax-color/racket-lexer + syntax-color/lexer-contract syntax/modread syntax/parse "shared.rkt") @@ -61,6 +62,16 @@ [else (raw-covered? i c)])))) cache))) +<<<<<<< HEAD +======= +(define (maybe-wrap-lexer lexer) + (if (procedure-arity-includes? lexer 3) + lexer + (λ (in offset mode) + (define-values (a b c d e) (lexer in)) + (values a b c d e 0 #f)))) + +>>>>>>> e051103... fixing lexer ;; Lexer(in the sence of color:text<%>) InputPort (Maybe (Listof Symbol)) -> (Natural -> Boolean) ;; builds a function that determines if a given location in that port is irrelivent. (define (make-irrelevant? lexer f submods) @@ -72,15 +83,20 @@ (define offset (make-byte->str-offset str)) - (let loop () - (define-values (v type _m start end) (lexer for-lex)) + + (let loop ([mode #f]) + (define-values (v type _m start end backup-dist new-mode/ds) + (lexer for-lex 0 mode)) + (define new-mode (if (dont-stop? new-mode/ds) + (dont-stop-val new-mode/ds) + new-mode/ds)) (case type [(eof) (void)] [(comment sexp-comment no-color white-space) (for ([i (in-range (- start (offset start)) (- end (offset end)))]) (set-add! s (+ init-offset i))) - (loop)] - [else (loop)])) + (loop new-mode)] + [else (loop new-mode)])) (define stx (with-input-from-file f (thunk (with-module-reading-parameterization read-syntax)))) diff --git a/tests/main.rkt b/tests/main.rkt index 1466805..6c09c15 100644 --- a/tests/main.rkt +++ b/tests/main.rkt @@ -27,6 +27,7 @@ (define-values (expected-coverage expected-uncoverage) (with-input-from-file cover (lambda () (values (ranges->numbers (read)) (ranges->numbers (read)))))) + (define covered? (make-covered? actual-coverage program)) (test-begin (for ([i expected-coverage]) (check-true (covered? i actual-coverage)