macro-debugger:

fixed internal error in reporting internal errors
  made debug files more readable
  fixed wrong ordering of local contexts

svn: r18328

original commit: e6c4518ae8dba118e03632a0cfc66c939a75755e
This commit is contained in:
Ryan Culpepper 2010-02-24 21:39:16 +00:00
commit 3ce3c33b95
3 changed files with 20 additions and 16 deletions

View File

@ -7,13 +7,15 @@
(define (write-debug-file file exn events)
(with-output-to-file file
(lambda ()
(write `(list ,@(map (lambda (e) (serialize-datum e)) events)))
(pretty-print
`(list ,@(map (lambda (e) (serialize-datum e)) events)))
(newline)
(write (exn-message exn))
(newline)
(write (map serialize-context-frame
(continuation-mark-set->context
(exn-continuation-marks exn)))))
(pretty-print
(map serialize-context-frame
(continuation-mark-set->context
(exn-continuation-marks exn)))))
#:exists 'replace))
(define (serialize-datum d)

View File

@ -119,17 +119,15 @@
(define/private (show-lctx step shift-table)
(define state (protostep-s1 step))
(define lctx (state-lctx state))
(when (pair? lctx)
(send: sbview sb:syntax-browser<%> add-text "\n")
(for ([bf (reverse lctx)])
(send: sbview sb:syntax-browser<%> add-text
"while executing macro transformer in:\n")
(insert-syntax/redex (bigframe-term bf)
(bigframe-foci bf)
(state-binders state)
shift-table
(state-uses state)
(state-frontier state)))))
(for ([bf lctx])
(send: sbview sb:syntax-browser<%> add-text
"\nwhile executing macro transformer in:\n")
(insert-syntax/redex (bigframe-term bf)
(bigframe-foci bf)
(state-binders state)
shift-table
(state-uses state)
(state-frontier state))))
;; separator : Step -> void
(define/private (separator step)

View File

@ -275,7 +275,11 @@
;; display-initial-term : -> void
(define/public (display-initial-term)
(send: displayer step-display<%> add-syntax (wderiv-e1 deriv)))
(cond [raw-deriv-oops
(send: displayer step-display<%> add-internal-error
"derivation" raw-deriv-oops #f events)]
[else
(send: displayer step-display<%> add-syntax (wderiv-e1 deriv))]))
;; display-final-term : -> void
(define/public (display-final-term)