28 lines
1.1 KiB
Racket
28 lines
1.1 KiB
Racket
#lang racket/base
|
|
(require syntax/modresolve)
|
|
(provide module-db)
|
|
|
|
;; A ModuleDB = hash[path/symbol => (U 'no-drop 'no-bypass)]
|
|
;; 'no-drop = must not be dropped or bypassed because of, eg, side effects
|
|
;; 'no-bypass = don't bypass in favor of private component modules
|
|
;; but if the module is unused, can drop it
|
|
;; (FIXME: replace with component module calculation and checking)
|
|
|
|
(define (make-module-db mod+config-list)
|
|
(for/hash ([mod+config (in-list mod+config-list)])
|
|
(values (resolve-module-path (car mod+config) #f) (cadr mod+config))))
|
|
|
|
;; module-db : ModuleDB
|
|
(define module-db
|
|
(make-module-db
|
|
'([racket/base no-bypass]
|
|
[racket/contract/base no-bypass]
|
|
[racket/gui no-bypass]
|
|
[racket/match no-bypass]
|
|
['#%builtin no-drop]
|
|
|
|
[typed-scheme/private/base-env no-drop]
|
|
[typed-scheme/private/base-special-env no-drop]
|
|
[typed-scheme/private/base-env-numeric no-drop]
|
|
[typed-scheme/private/base-env-indexing no-drop])))
|