40 lines
929 B
Racket
40 lines
929 B
Racket
#lang racket/base
|
|
|
|
;; check to see that multiple invokations don't duplicate code generation.
|
|
|
|
(require "../../private/compile-moby-module.rkt"
|
|
"../../private/module-record.rkt"
|
|
racket/runtime-path)
|
|
|
|
(define-runtime-path m.rkt
|
|
"m.rkt"
|
|
#;"/home/dyoo/Downloads/tmp/Package/tourguide.rkt")
|
|
|
|
(define (check-module-names-unique! module-records)
|
|
(let ([names (map module-record-name module-records)])
|
|
(unless (unique? names)
|
|
(error 'check-module-names-unique!
|
|
"modules with non-unique names: ~s" names))))
|
|
|
|
|
|
(define (unique? names)
|
|
(let ([ht (make-hash)])
|
|
(let/ec return
|
|
(for ([n names])
|
|
(cond [(hash-ref ht n #f)
|
|
(return #f)]
|
|
[else
|
|
(hash-set! ht n #t)])
|
|
(return #t)))))
|
|
|
|
|
|
|
|
|
|
|
|
(define (test)
|
|
(define modules
|
|
(compile-moby-modules m.rkt))
|
|
(check-module-names-unique! modules))
|
|
|
|
|
|
(test) |