macro debugger:
fixed hiding bug with non-collection modules improved #%top-interaction elimination Please apply changes for release. svn: r14887
This commit is contained in:
parent
f1d4fe02ea
commit
2e3a0bcd0d
|
@ -342,99 +342,11 @@
|
||||||
hide-none-policy)
|
hide-none-policy)
|
||||||
|
|
||||||
(define standard-policy
|
(define standard-policy
|
||||||
#;(make-policy #t #t #t #t null)
|
|
||||||
(policy->predicate 'standard))
|
(policy->predicate 'standard))
|
||||||
|
|
||||||
(define base-policy
|
(define base-policy
|
||||||
#;(make-policy #t #f #f #f null)
|
|
||||||
(policy->predicate
|
(policy->predicate
|
||||||
'(custom #t #f #f #f ())))
|
'(custom #t #f #f #f ())))
|
||||||
|
|
||||||
(define (hide-all-policy id) #f)
|
(define (hide-all-policy id) #f)
|
||||||
(define (hide-none-policy id) #t)
|
(define (hide-none-policy id) #t)
|
||||||
|
|
||||||
#|
|
|
||||||
|
|
||||||
;; make-policy : bool^4 (listof (identifier bindinglist (bool -> void) -> void))
|
|
||||||
;; -> identifier -> bool
|
|
||||||
(define (make-policy hide-mzscheme?
|
|
||||||
hide-libs?
|
|
||||||
hide-contracts?
|
|
||||||
hide-transformers?
|
|
||||||
specialized-policies)
|
|
||||||
(lambda (id)
|
|
||||||
(define now (phase))
|
|
||||||
(define binding
|
|
||||||
(cond [(= now 0) (identifier-binding id)]
|
|
||||||
[(= now 1) (identifier-transformer-binding id)]
|
|
||||||
[else #f]))
|
|
||||||
(define-values (def-mod def-name nom-mod nom-name)
|
|
||||||
(if (pair? binding)
|
|
||||||
(values (car binding)
|
|
||||||
(cadr binding)
|
|
||||||
(caddr binding)
|
|
||||||
(cadddr binding))
|
|
||||||
(values #f #f #f #f)))
|
|
||||||
(let/ec return
|
|
||||||
(let loop ([policies specialized-policies])
|
|
||||||
(when (pair? policies)
|
|
||||||
((car policies) id binding return)
|
|
||||||
(loop (cdr policies))))
|
|
||||||
(cond [(and hide-mzscheme? def-mod (scheme-module? def-mod))
|
|
||||||
#f]
|
|
||||||
[(and hide-libs? def-mod (lib-module? def-mod))
|
|
||||||
#f]
|
|
||||||
[(and hide-contracts? def-name
|
|
||||||
(regexp-match #rx"^provide/contract-id-"
|
|
||||||
(symbol->string def-name)))
|
|
||||||
#f]
|
|
||||||
[(and hide-transformers? (positive? now))
|
|
||||||
#f]
|
|
||||||
[else #t]))))
|
|
||||||
|
|
||||||
;; ----
|
|
||||||
|
|
||||||
(define (scheme-module? mpi)
|
|
||||||
(let ([abs (find-absolute-module-path mpi)])
|
|
||||||
(and abs
|
|
||||||
(or (base-module-path? abs)
|
|
||||||
(scheme-lib-module-path? abs)))))
|
|
||||||
|
|
||||||
(define (lib-module? mpi)
|
|
||||||
(let ([abs (find-absolute-module-path mpi)])
|
|
||||||
(and abs (lib-module-path? abs))))
|
|
||||||
|
|
||||||
|
|
||||||
(define (find-absolute-module-path mpi)
|
|
||||||
(and (module-path-index? mpi)
|
|
||||||
(let-values ([(path rel) (module-path-index-split mpi)])
|
|
||||||
(cond [(and (pair? path) (memq (car path) '(quote lib planet)))
|
|
||||||
path]
|
|
||||||
[(symbol? path) path]
|
|
||||||
[(string? path) (find-absolute-module-path rel)]
|
|
||||||
[else #f]))))
|
|
||||||
|
|
||||||
(define (base-module-path? mp)
|
|
||||||
(and (pair? mp)
|
|
||||||
(eq? 'quote (car mp))
|
|
||||||
(regexp-match #rx"^#%" (symbol->string (cadr mp)))))
|
|
||||||
|
|
||||||
(define (scheme-lib-module-path? mp)
|
|
||||||
(cond [(symbol? mp)
|
|
||||||
(scheme-collection-name? (symbol->string mp))]
|
|
||||||
[(and (pair? mp) (eq? (car mp) 'lib))
|
|
||||||
(cond [(string? (cadr mp)) (null? (cddr mp))
|
|
||||||
(scheme-collection-name? (cadr mp))]
|
|
||||||
[(symbol? (cadr mp))
|
|
||||||
(scheme-collection-name? (symbol->string (cadr mp)))]
|
|
||||||
[else #f])]
|
|
||||||
[else #f]))
|
|
||||||
|
|
||||||
(define (scheme-collection-name? path)
|
|
||||||
(or (regexp-match? #rx"^scheme/base(/.)?" path)
|
|
||||||
(regexp-match? #rx"^mzscheme(/.)?" path)))
|
|
||||||
|
|
||||||
(define (lib-module-path? mp)
|
|
||||||
(or (symbol? mp)
|
|
||||||
(and (pair? mp) (memq (car mp) '(lib planet)))))
|
|
||||||
|#
|
|
||||||
|
|
|
@ -41,15 +41,26 @@
|
||||||
;; (list #f) ;; "self" module
|
;; (list #f) ;; "self" module
|
||||||
;; null
|
;; null
|
||||||
|
|
||||||
|
;; An rmp-sexpr is
|
||||||
|
;; (list 'resolved path/symbol)
|
||||||
|
|
||||||
;; mpi->mpi-sexpr : mpi -> mpi-sexpr
|
;; mpi->mpi-sexpr : mpi -> mpi-sexpr
|
||||||
(define (mpi->mpi-sexpr mpi)
|
(define (mpi->mpi-sexpr mpi)
|
||||||
(cond [(module-path-index? mpi)
|
(cond [(module-path-index? mpi)
|
||||||
(let-values ([(mod next) (module-path-index-split mpi)])
|
(let-values ([(mod next) (module-path-index-split mpi)])
|
||||||
(cons mod (mpi->mpi-sexpr next)))]
|
(cons (mp->mp-sexpr mod) (mpi->mpi-sexpr next)))]
|
||||||
[(resolved-module-path? mpi)
|
[(resolved-module-path? mpi)
|
||||||
(list (rmp->rmp-sexpr mpi))]
|
(list (rmp->rmp-sexpr mpi))]
|
||||||
[else null]))
|
[else null]))
|
||||||
|
|
||||||
|
;; mp->mp-sexpr : mp -> mp-sexpr
|
||||||
|
(define (mp->mp-sexpr mp)
|
||||||
|
(if (path? mp)
|
||||||
|
(if (absolute-path? mp)
|
||||||
|
`(file ,(path->string mp))
|
||||||
|
(path->string mp))
|
||||||
|
mp))
|
||||||
|
|
||||||
;; mpi-sexpr->mpi : mpi-sexpr -> mpi
|
;; mpi-sexpr->mpi : mpi-sexpr -> mpi
|
||||||
(define (mpi-sexpr->mpi sexpr)
|
(define (mpi-sexpr->mpi sexpr)
|
||||||
(match sexpr
|
(match sexpr
|
||||||
|
@ -124,7 +135,11 @@
|
||||||
[else
|
[else
|
||||||
`(REL (split-mods path))])]
|
`(REL (split-mods path))])]
|
||||||
[(? string? path)
|
[(? string? path)
|
||||||
`(REL ,(split-mods path))]))
|
`(REL ,(split-mods path))]
|
||||||
|
[`(resolved ,(? path? path))
|
||||||
|
`(FILE ,path)]
|
||||||
|
[`(resolved ,(? symbol? symbol))
|
||||||
|
`(QUOTE ,symbol)]))
|
||||||
|
|
||||||
;; expanded-mpi-sexpr->mpi-sexpr
|
;; expanded-mpi-sexpr->mpi-sexpr
|
||||||
(define (expanded-mpi-sexpr->mpi-sexpr sexpr)
|
(define (expanded-mpi-sexpr->mpi-sexpr sexpr)
|
||||||
|
|
|
@ -23,7 +23,8 @@
|
||||||
"../model/reductions.ss"
|
"../model/reductions.ss"
|
||||||
"../model/steps.ss"
|
"../model/steps.ss"
|
||||||
"cursor.ss"
|
"cursor.ss"
|
||||||
"../util/notify.ss")
|
"../util/notify.ss"
|
||||||
|
(only-in mzscheme [#%top-interaction mz-top-interaction]))
|
||||||
(provide macro-stepper-widget%
|
(provide macro-stepper-widget%
|
||||||
macro-stepper-widget/process-mixin)
|
macro-stepper-widget/process-mixin)
|
||||||
|
|
||||||
|
@ -434,7 +435,8 @@
|
||||||
|
|
||||||
;; adjust-deriv/top : Derivation -> Derivation
|
;; adjust-deriv/top : Derivation -> Derivation
|
||||||
(define/private (adjust-deriv/top deriv)
|
(define/private (adjust-deriv/top deriv)
|
||||||
(if (or (syntax-source (wderiv-e1 deriv))
|
(if (or (and #| (syntax-source (wderiv-e1 deriv)) |#
|
||||||
|
(syntax-original? (wderiv-e1 deriv)))
|
||||||
(p:module? deriv))
|
(p:module? deriv))
|
||||||
deriv
|
deriv
|
||||||
;; It's not original...
|
;; It's not original...
|
||||||
|
@ -454,6 +456,7 @@
|
||||||
#f])))
|
#f])))
|
||||||
|
|
||||||
(define/public (top-interaction-kw? x)
|
(define/public (top-interaction-kw? x)
|
||||||
(free-identifier=? x #'#%top-interaction))
|
(or (free-identifier=? x #'#%top-interaction)
|
||||||
|
(free-identifier=? x #'mz-top-interaction)))
|
||||||
|
|
||||||
))
|
))
|
||||||
|
|
|
@ -38,9 +38,9 @@
|
||||||
(test-base base:if #f)
|
(test-base base:if #f)
|
||||||
|
|
||||||
;; Other Scheme/* forms
|
;; Other Scheme/* forms
|
||||||
(test-base scheme:match #t)
|
(test-base scheme:match #f)
|
||||||
(test-base scheme:unit #t)
|
(test-base scheme:unit #t)
|
||||||
(test-base scheme:class #t)
|
(test-base scheme:class #f)
|
||||||
|
|
||||||
;; Unbound names
|
;; Unbound names
|
||||||
(test-base no-such-name #t)
|
(test-base no-such-name #t)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user