Add documentation for check-requires.
original commit: 2e3e6822f3d7d96b0ced0983425ae43d8a08268d
This commit is contained in:
parent
78026f6456
commit
dcf745ce4a
|
@ -313,3 +313,58 @@ The binding information of a syntax object may not be the same as
|
||||||
the binding structure of the program it represents. The binding
|
the binding structure of the program it represents. The binding
|
||||||
structure of a program is only determined after macro expansion is
|
structure of a program is only determined after macro expansion is
|
||||||
complete.
|
complete.
|
||||||
|
|
||||||
|
|
||||||
|
@section{Checking requires}
|
||||||
|
@section-index["useless-requires"]
|
||||||
|
|
||||||
|
@defmodule[macro-debugger/analysis/check-requires]
|
||||||
|
|
||||||
|
@defproc[(check-requires [module-name module-path?])
|
||||||
|
(listof (list/c 'keep module-path-index? number? (or/c string? #f))
|
||||||
|
(list/c 'bypass module-path-index? number?)
|
||||||
|
(list/c 'drop module-path-index? number?))]{
|
||||||
|
|
||||||
|
Estimate a module's useless requires.
|
||||||
|
The procedure returns one element per (non-label) require in the
|
||||||
|
following format:
|
||||||
|
@itemlist[
|
||||||
|
@item{
|
||||||
|
@racket['keep] @racket[module] at @racket[phase] @racket[(optional-comment)]
|
||||||
|
@itemlist[
|
||||||
|
@item{The require must be kept because bindings defined within it are used.}
|
||||||
|
@item{The optional comment indicates if the require must be kept
|
||||||
|
@itemlist[
|
||||||
|
@item{only because its bindings are re-exported}
|
||||||
|
@item{only because the whitelist DB says so}
|
||||||
|
]}]}
|
||||||
|
@item{
|
||||||
|
@racket['bypass] @racket[module] at @racket[phase]
|
||||||
|
@itemlist[
|
||||||
|
@item{The require is used, but only for bindings that could be more
|
||||||
|
directly obtained via another module. For example, @racket[racket]
|
||||||
|
can be bypassed in favor of some subset of @racket[racket/base],
|
||||||
|
@racket[racket/contract], etc.}]}
|
||||||
|
@item{
|
||||||
|
@racket['drop] @racket[module] at @racket[phase]
|
||||||
|
@itemlist[
|
||||||
|
@item{The require appears to be unused. Unless it must be kept for side
|
||||||
|
effects or for bindings of a very unusual macro, it can be dropped
|
||||||
|
entirely.}]}]
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
@racketblock[
|
||||||
|
(check-requires 'typed-scheme)
|
||||||
|
(check-requires 'unstable/markparam)
|
||||||
|
(check-requires 'macro-debugger/syntax-browser/widget)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
A scripting interface to @racket[macro-debugger/analysis/check-requires]
|
||||||
|
usable from the command-line is available at
|
||||||
|
@racket[macro-debugger/analysis/check-requires-script.rkt].
|
||||||
|
|
||||||
|
Example (from racket root directory):
|
||||||
|
|
||||||
|
@commandline{racket -l macro-debugger/analysis/check-requires-script \
|
||||||
|
collects/syntax/*.rkt}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user