racket/pkgs/racket-test/tests/stxparse/deps.rkt
Ryan Culpepper 0a7d97df86 syntax/parse: fix dependencies, add deps test
Removes residual dep on racket/contract (again!)
Removes use of racket/struct (which depends on contract)
List other residual dependencies in sc.rkt
2016-08-01 10:47:38 -04:00

37 lines
1.1 KiB
Racket

#lang racket/base
(require rackunit)
;; Check that syntax/parse/pre has minimal *residual* dependencies.
(define (make-tracing-module-name-resolver omnr table)
(case-lambda
[(mod rel stx load?)
(when load?
(define res (omnr mod rel stx #f))
(hash-set! table (resolved-module-path-name res) #t))
(omnr mod rel stx load?)]
[args
(apply omnr args)]))
(define ns (make-base-namespace))
(define loaded (make-hash))
(define-check (check-no-dep mod)
(define res ((current-module-name-resolver) mod #f #f #f))
(define name (resolved-module-path-name res))
(check-false (hash-ref loaded name #f)))
(parameterize ((current-module-name-resolver
(make-tracing-module-name-resolver
(current-module-name-resolver)
loaded))
(current-namespace ns))
(namespace-require 'syntax/parse/pre)
(test-case "no dep on racket/contract/base"
(check-no-dep 'racket/contract/base))
(test-case "no deps on impl modules"
(check-no-dep 'syntax/parse/private/rep)
(check-no-dep 'syntax/parse/private/parse))
)