From b958e21f466fea4b078e6b98e434346c8c90bd4a Mon Sep 17 00:00:00 2001 From: Casey Klein Date: Tue, 29 Mar 2011 13:04:20 -0500 Subject: [PATCH] Fixes another bug in the stepper's diff highlighting --- collects/redex/private/sexp-diffs.rkt | 6 +++++- collects/redex/tests/stepper-test.rkt | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/collects/redex/private/sexp-diffs.rkt b/collects/redex/private/sexp-diffs.rkt index 121ad16724..9bdc0768fa 100644 --- a/collects/redex/private/sexp-diffs.rkt +++ b/collects/redex/private/sexp-diffs.rkt @@ -52,7 +52,9 @@ (let loop ([s s]) (cond [(pair? s) (cons (loop (car s)) - (loop (cdr s)))] + (if (null? (cdr s)) + '() + (loop (cdr s))))] [(vector? s) (list->vector (map loop (vector->list s)))] [(box? s) @@ -60,6 +62,8 @@ [(syntax? s) (datum->syntax s (unkink (loop (syntax-e s))) s)] [(number? s) (make-wrap s)] [(symbol? s) (make-wrap s)] + [(null? s) (make-wrap s)] + [(boolean? s) (make-wrap s)] [else s]))) (define-struct wrap (content) #:inspector (make-inspector)) diff --git a/collects/redex/tests/stepper-test.rkt b/collects/redex/tests/stepper-test.rkt index aed8332f66..ba28cca1e8 100644 --- a/collects/redex/tests/stepper-test.rkt +++ b/collects/redex/tests/stepper-test.rkt @@ -20,10 +20,11 @@ [change-path 'dont-care] [init-cw (initial-char-width)])) (define (ranges node) - (map (λ (range) (cons (text:range-start range) - (text:range-end range))) - (send (send (send node get-big-snip) get-editor) - get-highlighted-ranges))) + (sort (map (λ (range) (cons (text:range-start range) + (text:range-end range))) + (send (send (send node get-big-snip) get-editor) + get-highlighted-ranges)) + < #:key car)) (define from-node (make-node from)) (define to-node (make-node to)) (show-diff from-node to-node) @@ -34,4 +35,11 @@ (test (diff (term (,'hole a)) (term (,'hole b))) (cons (list (cons 8 9)) (list (cons 8 9)))) +(test (diff (term (() #f () #f)) (term (1 2 () #f))) + (cons (list (cons 1 3) (cons 4 6)) + (list (cons 1 2) (cons 3 4)))) +(test (diff (term (<> ((a b)) () e)) (term (<> ((a b)) () (c d)))) + (cons (list (cons 15 16)) + (list (cons 15 20)))) + (print-tests-passed 'stepper-test.ss) \ No newline at end of file