From 90baf7868da3b8748782a90080be89e04319e708 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Sat, 4 Jul 2015 17:23:23 -0700 Subject: [PATCH] shift some stuff --- sugar/debug.rkt | 49 ++++++++++++++++++++++++++++++++ sugar/debug/lang/lang/reader.rkt | 28 ------------------ sugar/debug/reader.rkt | 30 ------------------- sugar/test/debug-meta-lang.rkt | 2 +- 4 files changed, 50 insertions(+), 59 deletions(-) delete mode 100644 sugar/debug/lang/lang/reader.rkt delete mode 100644 sugar/debug/reader.rkt diff --git a/sugar/debug.rkt b/sugar/debug.rkt index 42778c9..aa5d609 100644 --- a/sugar/debug.rkt +++ b/sugar/debug.rkt @@ -5,3 +5,52 @@ (provide+safe report report/line report/file report* report*/line report*/file report-apply repeat time-repeat time-repeat* compare) + + +(module* reader racket/base + (require syntax/module-reader racket/syntax) + (provide (rename-out [debug-read read] + [debug-read-syntax read-syntax] + [debug-get-info get-info])) + + (define (make-debug-readtable [rt (current-readtable)]) + (make-readtable rt #\^ 'dispatch-macro report-proc)) + + + (define/with-syntax report (datum->syntax #f 'report)) + (define/with-syntax report/line (datum->syntax #f 'report/line)) + + + (define (report-proc c in src ln col pos) + (define c2 (peek-char in)) + (cond [(char=? c2 #\^) + (read-char in) + (define stx (read-syntax/recursive src in)) + #`(report/line #,stx)] + [else + (define stx (read-syntax/recursive src in)) + #`(report #,stx)])) + + + (define (wrap-reader reader) + (define (rd . args) + (parameterize ([current-readtable (make-debug-readtable (current-readtable))]) + (apply reader args))) + rd) + + + (define-values (debug-read debug-read-syntax debug-get-info) + (make-meta-reader + 'sugar/debug + "language path" + (lambda (bstr) + (let* ([str (bytes->string/latin-1 bstr)] + [sym (string->symbol str)]) + (and (module-path? sym) (vector `(submod ,sym reader))))) + wrap-reader + wrap-reader + (lambda (proc) + (lambda (key defval) + (define (fallback) (if proc (proc key defval) defval)) + (case key + [else (fallback)])))))) \ No newline at end of file diff --git a/sugar/debug/lang/lang/reader.rkt b/sugar/debug/lang/lang/reader.rkt deleted file mode 100644 index 60fe625..0000000 --- a/sugar/debug/lang/lang/reader.rkt +++ /dev/null @@ -1,28 +0,0 @@ -(module reader racket/base - (require syntax/module-reader - (only-in "../../reader.rkt" make-debug-readtable wrap-reader)) - - (provide (rename-out [debug-read read] - [debug-read-syntax read-syntax] - [debug-get-info get-info])) - - (define-values (debug-read debug-read-syntax debug-get-info) - (make-meta-reader - 'sugar/debug/lang - "language path" - (lambda (bstr) - (let* ([str (bytes->string/latin-1 bstr)] - [sym (string->symbol str)]) - (and (module-path? sym) - (vector - ;; try submod first: - `(submod ,sym reader) - ;; fall back to /lang/reader: - (string->symbol (string-append str "/lang/reader")))))) - wrap-reader - wrap-reader - (lambda (proc) - (lambda (key defval) - (define (fallback) (if proc (proc key defval) defval)) - (case key - [else (fallback)])))))) diff --git a/sugar/debug/reader.rkt b/sugar/debug/reader.rkt deleted file mode 100644 index 4e0f70e..0000000 --- a/sugar/debug/reader.rkt +++ /dev/null @@ -1,30 +0,0 @@ -#lang racket/base - -(provide make-debug-readtable wrap-reader) - -(require racket/syntax) - -(define (make-debug-readtable [rt (current-readtable)]) - (make-readtable rt - #\^ 'dispatch-macro report-proc - )) - -(define/with-syntax report (datum->syntax #f 'report)) -(define/with-syntax report/line (datum->syntax #f 'report/line)) - -(define (report-proc c in src ln col pos) - (define c2 (peek-char in)) - (cond [(char=? c2 #\^) - (read-char in) - (define stx (read-syntax/recursive src in)) - #`(report/line #,stx)] - [else - (define stx (read-syntax/recursive src in)) - #`(report #,stx)])) - -(define (wrap-reader reader) - (define (rd . args) - (parameterize ([current-readtable (make-debug-readtable (current-readtable))]) - (apply reader args))) - rd) - diff --git a/sugar/test/debug-meta-lang.rkt b/sugar/test/debug-meta-lang.rkt index 833039f..8aa3a33 100644 --- a/sugar/test/debug-meta-lang.rkt +++ b/sugar/test/debug-meta-lang.rkt @@ -1,4 +1,4 @@ -#lang sugar/debug/lang racket +#lang sugar/debug racket (require sugar/debug rackunit) (let ([out (open-output-string)]) (parameterize ([current-error-port out])