Changeset 14805 in project


Ignore:
Timestamp:
05/27/09 16:27:14 (10 years ago)
Author:
felix winkelmann
Message:

fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chicken/branches/scrutiny/scrutinizer.scm

    r14800 r14805  
    9999
    100100(define-constant +fragment-max-length+ 5)
     101(define-constant +fragment-max-depth+ 3)
    101102
    102103(define (scrutinize node db)
     
    159160          t)
    160161         "value"
    161          (sprintf "in conditional `~s'," (fragment x))))
     162         (sprintf "in conditional:~%~%~a~%," (pp-fragment x))))
    162163      f))
    163164  (define (typename t)
     
    458459  (define (fragment x)
    459460    (let ((x (build-expression-tree x)))
    460       (cond ((atom? x) x)
    461             ((list? x)
    462              (let ((x1 (if (> (length x) +fragment-max-length+)
    463                            (append (take x +fragment-max-length+) '(...))
    464                            x)))
    465                (map (lambda (x)
    466                       (if (and (list? x) (any pair? x))
    467                           '(...)
    468                           x))
    469                     x1)))
    470             (else x))))
     461      (let walk ((x x) (d 0))
     462        (cond ((atom? x) x)
     463              ((>= d +fragment-max-depth+) '...)
     464              ((list? x)
     465               (map (cute walk <> (add1 d)) (take x (min +fragment-max-length+ (length x)))))
     466              (else x)))))
     467  (define (pp-fragment x)
     468    (with-output-to-string
     469      (lambda ()
     470        (pp (fragment x)))))
    471471  (define (call-result args e loc x params)
    472472    (define (pname)
     
    566566                                   loc
    567567                                   (sprintf
    568                                     "branches in conditional expression `~s' differ in the number of results"
    569                                     (fragment n))))
     568                                    "branches in conditional expression differ in the number of results:~%~%~a"
     569                                    (pp-fragment n))))
    570570                                (map (lambda (t1 t2) (simplify `(or ,t1 ,t2)))
    571571                                     r1 r2))
Note: See TracChangeset for help on using the changeset viewer.