replace define-library-alias with define-library + alias-for

This commit is contained in:
Alex Shinn 2020-06-04 23:55:37 +09:00
parent c245d6cee8
commit d42d4d5600
39 changed files with 141 additions and 153 deletions

9
.gitignore vendored
View file

@ -51,15 +51,23 @@ lib/chibi/stty.c
lib/chibi/system.c lib/chibi/system.c
lib/chibi/time.c lib/chibi/time.c
lib/chibi/win32/process-win32.c lib/chibi/win32/process-win32.c
lib/scheme/bytevector.c
lib/srfi/144/math.c lib/srfi/144/math.c
lib/srfi/160/uvprims.c lib/srfi/160/uvprims.c
*.tgz *.tgz
*.bz2
*.xz
*.html *.html
*.img *.img
*.err *.err
*.fasl *.fasl
*.txt
*.test
*.train
*.h5
!index.html !index.html
benchmarks/gabriel/times.tsv
examples/snow-fort examples/snow-fort
examples/synthcode examples/synthcode
tests/snow/repo-cache tests/snow/repo-cache
@ -73,3 +81,4 @@ tmp
js/chibi.* js/chibi.*
build-lib/chibi/char-set/derived.scm build-lib/chibi/char-set/derived.scm
build-lib/chibi/char-set/width.scm

View file

@ -229,101 +229,104 @@
(define define-library-transformer (define define-library-transformer
(er-macro-transformer (er-macro-transformer
(lambda (expr rename compare) (lambda (expr rename compare)
(let ((name (cadr expr)) (cond
(body (cddr expr)) ((find (lambda (x) (and (pair? x) (compare (car x) (rename 'alias-for))))
(tmp (rename 'tmp)) (cddr expr))
(this-module (rename '*this-module*)) => (lambda (alias)
(_add-module! (rename 'add-module!)) (if (not (= 1 (length (cddr expr))))
(_make-module (rename 'make-module)) (error "alias must be the only library declaration" expr))
(_define (rename 'meta-define)) ;; we need to load the original module first, not just find it,
(_lambda (rename 'lambda)) ;; or else the includes would happen relative to the alias
(_let (rename 'let)) (let ((name (cadr expr))
(_map (rename 'map)) (orig (load-module (cadr alias))))
(_if (rename 'if)) (if (not orig)
(_cond (rename 'cond)) (error "couldn't find library to alias" (cadr alias))
(_set! (rename 'set!)) `(,(rename 'add-module!) (,(rename 'quote) ,name)
(_quote (rename 'quote)) (,(rename 'quote) ,orig))))))
(_and (rename 'and)) (else
(_= (rename '=)) (let ((name (cadr expr))
(_eq? (rename 'eq?)) (body (cddr expr))
(_pair? (rename 'pair?)) (tmp (rename 'tmp))
(_null? (rename 'null?)) (this-module (rename '*this-module*))
(_reverse (rename 'reverse)) (_add-module! (rename 'add-module!))
(_append (rename 'append)) (_make-module (rename 'make-module))
(_assq (rename 'assq)) (_define (rename 'meta-define))
(_=> (rename '=>)) (_lambda (rename 'lambda))
(_else (rename 'else)) (_let (rename 'let))
(_length (rename 'length)) (_map (rename 'map))
(_identifier->symbol (rename 'identifier->symbol)) (_if (rename 'if))
(_error (rename 'error)) (_cond (rename 'cond))
(_cons (rename 'cons)) (_set! (rename 'set!))
(_car (rename 'car)) (_quote (rename 'quote))
(_cdr (rename 'cdr)) (_and (rename 'and))
(_caar (rename 'caar)) (_= (rename '=))
(_cadr (rename 'cadr)) (_eq? (rename 'eq?))
(_cdar (rename 'cdar)) (_pair? (rename 'pair?))
(_cddr (rename 'cddr))) (_null? (rename 'null?))
;; Check for suspicious defines. (_reverse (rename 'reverse))
(for-each (_append (rename 'append))
(lambda (x) (_assq (rename 'assq))
(if (and (pair? x) (memq (strip-syntactic-closures (car x)) (_=> (rename '=>))
'(define define-syntax))) (_else (rename 'else))
(warn "suspicious use of define in library declarations - did you forget to wrap it in begin?" x))) (_length (rename 'length))
(cdr expr)) (_identifier->symbol (rename 'identifier->symbol))
;; Generate the library wrapper. (_error (rename 'error))
(set! *this-path* (_cons (rename 'cons))
(cons (string-concatenate (_car (rename 'car))
(module-name->strings (cdr (reverse name)) '())) (_cdr (rename 'cdr))
*this-path*)) (_caar (rename 'caar))
`(,_let ((,tmp ,this-module)) (_cadr (rename 'cadr))
(,_define (rewrite-export x) (_cdar (rename 'cdar))
(,_if (,_pair? x) (_cddr (rename 'cddr)))
(,_if (,_and (,_= 3 (,_length x)) ;; Check for suspicious defines.
(,_eq? (,_quote rename) (for-each
(,_identifier->symbol (,_car x)))) (lambda (x)
(,_cons (,_car (,_cddr x)) (,_cadr x)) (if (and (pair? x) (memq (strip-syntactic-closures (car x))
(,_error "invalid module export" x)) '(define define-syntax)))
x)) (warn "suspicious use of define in library declarations - did you forget to wrap it in begin?" x)))
(,_define (extract-exports) (cdr expr))
(,_cond ;; Generate the library wrapper.
((,_assq (,_quote export-all) ,this-module) (set! *this-path*
,_=> (,_lambda (x) (cons (string-concatenate
(,_if (,_pair? (,_cdr x)) (module-name->strings (cdr (reverse name)) '()))
(,_error "export-all takes no parameters" x)) *this-path*))
#f)) `(,_let ((,tmp ,this-module))
(,_else (,_define (rewrite-export x)
(,_let lp ((ls ,this-module) (res (,_quote ()))) (,_if (,_pair? x)
(,_cond (,_if (,_and (,_= 3 (,_length x))
((,_null? ls) res) (,_eq? (,_quote rename)
((,_and (,_pair? (,_car ls)) (,_identifier->symbol (,_car x))))
(,_eq? (,_quote export) (,_caar ls))) (,_cons (,_car (,_cddr x)) (,_cadr x))
(lp (,_cdr ls) (,_error "invalid module export" x))
(,_append (,_map rewrite-export (,_cdar ls)) res))) x))
(,_else (lp (,_cdr ls) res))))))) (,_define (extract-exports)
(,_set! ,this-module (,_quote ())) (,_cond
,@body ((,_assq (,_quote export-all) ,this-module)
(,_add-module! (,_quote ,name) ,_=> (,_lambda (x)
(,_make-module (extract-exports) (,_if (,_pair? (,_cdr x))
#f (,_error "export-all takes no parameters" x))
(,_reverse ,this-module))) #f))
(,_set! ,this-module ,tmp) (,_else
(,(rename 'pop-this-path))))))) (,_let lp ((ls ,this-module) (res (,_quote ())))
(,_cond
((,_null? ls) res)
((,_and (,_pair? (,_car ls))
(,_eq? (,_quote export) (,_caar ls)))
(lp (,_cdr ls)
(,_append (,_map rewrite-export (,_cdar ls)) res)))
(,_else (lp (,_cdr ls) res)))))))
(,_set! ,this-module (,_quote ()))
,@body
(,_add-module! (,_quote ,name)
(,_make-module (extract-exports)
#f
(,_reverse ,this-module)))
(,_set! ,this-module ,tmp)
(,(rename 'pop-this-path)))))))))
(define-syntax define-library define-library-transformer) (define-syntax define-library define-library-transformer)
(define-syntax module define-library-transformer) (define-syntax module define-library-transformer)
(define-syntax define-library-alias
(er-macro-transformer
(lambda (expr rename compare)
;; we need to load the original module first, not just find it,
;; or else the includes would happen relative to the alias
(let ((name (cadr expr))
(orig (load-module (car (cddr expr)))))
(if (not orig)
(error "couldn't find library to alias" (car (cddr expr)))
`(,(rename 'add-module!) (,(rename 'quote) ,name)
(,(rename 'quote) ,orig)))))))
(define-syntax pop-this-path (define-syntax pop-this-path
(er-macro-transformer (er-macro-transformer
(lambda (expr rename compare) (lambda (expr rename compare)

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme bitwise) (srfi 151)) (define-library (scheme bitwise) (alias-for (srfi 151)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme box) (srfi 111)) (define-library (scheme box) (alias-for (srfi 111)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme case-lambda) (srfi 16)) (define-library (scheme case-lambda) (alias-for (srfi 16)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme charset) (srfi 14)) (define-library (scheme charset) (alias-for (srfi 14)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme comparator) (srfi 128)) (define-library (scheme comparator) (alias-for (srfi 128)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme ephemeron) (srfi 124)) (define-library (scheme ephemeron) (alias-for (srfi 124)))

2
lib/scheme/fixnum.sld Normal file
View file

@ -0,0 +1,2 @@
(define-library (scheme fixnum) (alias-for (srfi 143)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme flonum) (srfi 144)) (define-library (scheme flonum) (alias-for (srfi 144)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme generator) (srfi 121)) (define-library (scheme generator) (alias-for (srfi 121)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme hash-table) (srfi 125)) (define-library (scheme hash-table) (alias-for (srfi 125)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme ideque) (srfi 134)) (define-library (scheme ideque) (alias-for (srfi 134)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme ilist) (srfi 116)) (define-library (scheme ilist) (alias-for (srfi 116)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme list-queue) (srfi 117)) (define-library (scheme list-queue) (alias-for (srfi 117)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme list) (srfi 1)) (define-library (scheme list) (alias-for (srfi 1)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme lseq) (srfi 127)) (define-library (scheme lseq) (alias-for (srfi 127)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme mapping) (srfi 146)) (define-library (scheme mapping) (alias-for (srfi 146)))

View file

@ -1,28 +1,2 @@
(define-library (scheme mapping hash) (define-library (scheme mapping hash) (alias-for (srfi 146 hash)))
(import (srfi 146 hash))
(export
hashmap hashmap-unfold
hashmap? hashmap-contains? hashmap-empty? hashmap-disjoint?
hashmap-ref hashmap-ref/default hashmap-key-comparator
hashmap-adjoin hashmap-adjoin!
hashmap-set hashmap-set!
hashmap-replace hashmap-replace!
hashmap-delete hashmap-delete! hashmap-delete-all hashmap-delete-all!
hashmap-intern hashmap-intern!
hashmap-update hashmap-update! hashmap-update/default hashmap-update!/default
hashmap-pop hashmap-pop!
hashmap-search hashmap-search!
hashmap-size hashmap-find hashmap-count hashmap-any? hashmap-every?
hashmap-keys hashmap-values hashmap-entries
hashmap-map hashmap-map->list hashmap-for-each hashmap-fold
hashmap-filter hashmap-filter!
hashmap-remove hashmap-remove!
hashmap-partition hashmap-partition!
hashmap-copy hashmap->alist alist->hashmap alist->hashmap!
hashmap=? hashmap<? hashmap>? hashmap<=? hashmap>=?
hashmap-union hashmap-intersection hashmap-difference hashmap-xor
hashmap-union! hashmap-intersection! hashmap-difference! hashmap-xor!
make-hashmap-comparator
hashmap-comparator
comparator?))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme regex) (srfi 115)) (define-library (scheme regex) (alias-for (srfi 115)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme set) (srfi 113)) (define-library (scheme set) (alias-for (srfi 113)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme show) (srfi 166)) (define-library (scheme show) (alias-for (srfi 166)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme sort) (srfi 132)) (define-library (scheme sort) (alias-for (srfi 132)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme stream) (srfi 41)) (define-library (scheme stream) (alias-for (srfi 41)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme text) (srfi 135)) (define-library (scheme text) (alias-for (srfi 135)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector) (srfi 133)) (define-library (scheme vector) (alias-for (srfi 133)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector base) (srfi 160 base)) (define-library (scheme vector base) (alias-for (srfi 160 base)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector c128) (srfi 160 c128)) (define-library (scheme vector c128) (alias-for (srfi 160 c128)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector c64) (srfi 160 c64)) (define-library (scheme vector c64) (alias-for (srfi 160 c64)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector f32) (srfi 160 f32)) (define-library (scheme vector f32) (alias-for (srfi 160 f32)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector f64) (srfi 160 f64)) (define-library (scheme vector f64) (alias-for (srfi 160 f64)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector s16) (srfi 160 s16)) (define-library (scheme vector s16) (alias-for (srfi 160 s16)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector s32) (srfi 160 s32)) (define-library (scheme vector s32) (alias-for (srfi 160 s32)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector s64) (srfi 160 s64)) (define-library (scheme vector s64) (alias-for (srfi 160 s64)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector s8) (srfi 160 s8)) (define-library (scheme vector s8) (alias-for (srfi 160 s8)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector u16) (srfi 160 u16)) (define-library (scheme vector u16) (alias-for (srfi 160 u16)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector u32) (srfi 160 u32)) (define-library (scheme vector u32) (alias-for (srfi 160 u32)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector u64) (srfi 160 u64)) (define-library (scheme vector u64) (alias-for (srfi 160 u64)))

View file

@ -1,2 +1,2 @@
(define-library-alias (scheme vector u8) (srfi 160 u8)) (define-library (scheme vector u8) (alias-for (srfi 160 u8)))