allow (submod "..")' as a shorthand for (submod "." "..")'

Also, `(submod ".")' is allowed as a module path; it's not useful,
but it makes the grammar slightly more regular.
This commit is contained in:
Matthew Flatt 2012-03-22 18:43:11 -06:00
parent 876bc6f02b
commit ae89e210fb
12 changed files with 360 additions and 255 deletions

View File

@ -212,7 +212,8 @@ with other forms.}
@specsubform/subs[#:literals (submod) @specsubform/subs[#:literals (submod)
(submod base element ...+) (submod base element ...+)
([base module-path ([base module-path
"."] "."
".."]
[element id [element id
".."])]{ ".."])]{
@ -229,13 +230,14 @@ names to reach the final submodule.
monkey monkey
] ]
Using @racket["."] as @racket[base] within @racket[submod] stands for the Using @racket["."] as @racket[base] within @racket[submod] stands for
enclosing module. When a path of the form @racket[(#,(racket quote) the enclosing module. Using @racket[".."] as @racket[base] is
id)] refers to a submodule, it is equivalent to @racket[(submod "." equivalent to using @racket["."] followed by an extra
id)]. @racket[".."]. When a path of the form @racket[(#,(racket quote) id)]
refers to a submodule, it is equivalent to @racket[(submod "." id)].
Using @racket[".."] as an @racket[element] cancels one submodule step, effectively Using @racket[".."] as an @racket[element] cancels one submodule step, effectively
referring to the enclosing module. For example, @racket[(submod "." "..")] referring to the enclosing module. For example, @racket[(submod "..")]
refers to the enclosing module of the submodule in which the path refers to the enclosing module of the submodule in which the path
appears. appears.
@ -245,7 +247,7 @@ appears.
(provide monkey) (provide monkey)
(define monkey "Curious George")) (define monkey "Curious George"))
(module crocodile-house racket (module crocodile-house racket
(require (submod "." ".." monkey-house)) (require (submod ".." monkey-house))
(provide dinner) (provide dinner)
(define dinner monkey))) (define dinner monkey)))
(require (submod 'zoo crocodile-house)) (require (submod 'zoo crocodile-house))

View File

@ -362,8 +362,9 @@ Legal only in a @tech{module begin context}, and handled by the
(for-label require-spec ...) (for-label require-spec ...)
(for-meta phase-level require-spec ...) (for-meta phase-level require-spec ...)
derived-require-spec] derived-require-spec]
[module-path (submod root-module-path submod-path-element ...+) [module-path (submod root-module-path submod-path-element ...)
(submod "." submod-path-element ...+)] (submod "." submod-path-element ...)
(submod ".." submod-path-element ...)]
[root-module-path (#,(racket quote) id) [root-module-path (#,(racket quote) id)
rel-string rel-string
(lib rel-string ...+) (lib rel-string ...+)
@ -765,14 +766,18 @@ corresponds to the default @tech{module name resolver}.
(eval:alts (require (planet mcdonald/farm:2:5/duck)) (void)) (eval:alts (require (planet mcdonald/farm:2:5/duck)) (void))
]} ]}
@defsubform*[((submod root-module submod-path-element ...+) @defsubform*[((submod root-module submod-path-element ...)
(submod "." submod-path-element ...+))]{ (submod "." submod-path-element ...)
(submod ".." submod-path-element ...))]{
Identifies a @tech{submodule} within the module specified by @racket[root-module] Identifies a @tech{submodule} within the module specified by @racket[root-module]
or relative to the current module in the case of @racket[(submod "." ....)]. or relative to the current module in the case of @racket[(submod "." ....)],
where @racket[(submod ".." submod-path-element ...)] is equivalent to
@racket[(submod "." ".." submod-path-element ...)].
Submodules have symbolic names, and a sequence of identifiers as @racket[submod-path-element]s Submodules have symbolic names, and a sequence of identifiers as @racket[submod-path-element]s
determine a path of successively nested submodules with the given names. determine a path of successively nested submodules with the given names.
A @racket[".."] as a @racket[submod-path-element] names the enclosing module A @racket[".."] as a @racket[submod-path-element] names the enclosing module
of a submodule, and it's intended for use in @racket[(submod "." ....)] forms.} of a submodule, and it's intended for use in @racket[(submod "." ....)]
and @racket[(submod ".." ....)] forms.}
} }

View File

@ -96,14 +96,20 @@
(module-path-index-join s #f))) (module-path-index-join s #f)))
submod)] submod)]
[(eq? (car s) 'submod) [(eq? (car s) 'submod)
(define r (if (equal? (cadr s) ".") (define r (cond
(let () [(or (equal? (cadr s) ".")
(define-values (d submod) (force-relto relto #f)) (equal? (cadr s) ".."))
(combine-submod d submod)) (define-values (d submod) (force-relto relto #f))
(resolve-module-path (cadr s) relto))) (combine-submod d submod)]
(define base-submods (if (and (equal? (cadr s) ".") (pair? r)) (cddr r) null)) [else (resolve-module-path (cadr s) relto)]))
(define base-submods (if (and (or (equal? (cadr s) ".")
(equal? (cadr s) ".."))
(pair? r))
(cddr r)
null))
(define base (if (pair? r) (cadr r) r)) (define base (if (pair? r) (cadr r) r))
(flatten base (append base-submods (cddr s)))] (flatten base (append base-submods
(if (equal? (cadr s) "..") (cdr s) (cddr s))))]
[else #f])) [else #f]))
(define (resolve-module-path-index mpi relto) (define (resolve-module-path-index mpi relto)

View File

@ -287,7 +287,9 @@ Use syntax/modcollapse instead.
(if (null? subpath) (if (null? subpath)
(cadr sm) (cadr sm)
`(submod ,(cadr sm) ,@subpath))) `(submod ,(cadr sm) ,@subpath)))
sm)) (if (null? (cddr sm))
(cadr sm)
sm)))
(let normalize-recur ([s s]) (let normalize-recur ([s s])
(cond [(string? s) (cond [(string? s)
@ -317,11 +319,15 @@ Use syntax/modcollapse instead.
[(eq? (car s) 'planet) (normalize-planet s)] [(eq? (car s) 'planet) (normalize-planet s)]
[(eq? (car s) 'quote) s] [(eq? (car s) 'quote) s]
[(eq? (car s) 'submod) [(eq? (car s) 'submod)
(if (equal? (cadr s) ".") (cond
(begin [(equal? (cadr s) ".")
(flatten-relto-mp!) (flatten-relto-mp!)
(normalize-submod `(submod ,relto-mp ,@relto-submod ,@(cddr s)))) (normalize-submod `(submod ,relto-mp ,@relto-submod ,@(cddr s)))]
(normalize-submod `(submod ,(normalize-recur (cadr s)) ,@relto-submod ,@(cddr s))))] [(equal? (cadr s) "..")
(flatten-relto-mp!)
(normalize-submod `(submod ,relto-mp ,@relto-submod ,@(cdr s)))]
[else
(normalize-submod `(submod ,(normalize-recur (cadr s)) ,@relto-submod ,@(cddr s)))])]
[else #f]))) [else #f])))
(define (collapse-module-path-index mpi relto-mp) (define (collapse-module-path-index mpi relto-mp)

View File

@ -14,6 +14,7 @@
(unless (and (pair? path) (eq? 'submod (car path))) (unless (and (pair? path) (eq? 'submod (car path)))
(test `(submod ,expect a b) resolve-module-path `(submod ,path a b) rel-to) (test `(submod ,expect a b) resolve-module-path `(submod ,path a b) rel-to)
(test `(submod ,expect a b) resolve-module-path `(submod ,path a c ".." b) rel-to) (test `(submod ,expect a b) resolve-module-path `(submod ,path a c ".." b) rel-to)
(test expect resolve-module-path `(submod ,path) rel-to)
(when rel-to (when rel-to
(test expect collapse-module-path path (if (procedure? rel-to) (test expect collapse-module-path path (if (procedure? rel-to)
(lambda () `(submod ,(rel-to) a b)) (lambda () `(submod ,(rel-to) a b))
@ -29,7 +30,8 @@
pi-rel-to) pi-rel-to)
(unless (and (pair? path) (unless (and (pair? path)
(eq? (car path) 'submod) (eq? (car path) 'submod)
(equal? (cadr path) ".")) (or (equal? (cadr path) ".")
(equal? (cadr path) "..")))
(test expect resolve-module-path-index (test expect resolve-module-path-index
(module-path-index-join path (module-path-index-join path
(module-path-index-join (module-path-index-join
@ -67,8 +69,10 @@
(test-rmp (build-path (current-directory) "x.rkt") (build-path (current-directory) "x.ss") #f) (test-rmp (build-path (current-directory) "x.rkt") (build-path (current-directory) "x.ss") #f)
(test-rmp (build-path (current-directory) "x.rkt") (build-path "x.ss") #f) (test-rmp (build-path (current-directory) "x.rkt") (build-path "x.ss") #f)
(test-rmp `(submod ,(build-path mzlib "y.rkt") n) '(submod "y.rkt" n) `(submod ,(build-path mzlib "x.rkt") q z)) (test-rmp `(submod ,(build-path mzlib "y.rkt") n) '(submod "y.rkt" n) `(submod ,(build-path mzlib "x.rkt") q z))
(test-rmp `(submod ,(build-path mzlib "x.rkt") q) '(submod "..") `(submod ,(build-path mzlib "x.rkt") q z))
(test-rmp `(submod ,(build-path mzlib "x.rkt") q) '(submod "." "..") `(submod ,(build-path mzlib "x.rkt") q z)) (test-rmp `(submod ,(build-path mzlib "x.rkt") q) '(submod "." "..") `(submod ,(build-path mzlib "x.rkt") q z))
(test-rmp (build-path mzlib "x.rkt") '(submod "." ".." "..") `(submod ,(build-path mzlib "x.rkt") q z)) (test-rmp (build-path mzlib "x.rkt") '(submod "." ".." "..") `(submod ,(build-path mzlib "x.rkt") q z))
(test-rmp (build-path mzlib "x.rkt") '(submod ".." "..") `(submod ,(build-path mzlib "x.rkt") q z))
(void)) (void))
(err/rt-test (resolve-module-path "apple.ss" 'no)) (err/rt-test (resolve-module-path "apple.ss" 'no))
@ -90,6 +94,7 @@
(unless (and (pair? path) (eq? 'submod (car path))) (unless (and (pair? path) (eq? 'submod (car path)))
(test `(submod ,expect a b) collapse-module-path `(submod ,path a b) rel-to) (test `(submod ,expect a b) collapse-module-path `(submod ,path a b) rel-to)
(test `(submod ,expect a b) collapse-module-path `(submod ,path a c ".." b) rel-to) (test `(submod ,expect a b) collapse-module-path `(submod ,path a c ".." b) rel-to)
(test expect collapse-module-path `(submod ,path) rel-to)
(unless (symbol? rel-to) (unless (symbol? rel-to)
(test expect collapse-module-path path (if (procedure? rel-to) (test expect collapse-module-path path (if (procedure? rel-to)
(lambda () `(submod ,(rel-to) a b)) (lambda () `(submod ,(rel-to) a b))
@ -97,7 +102,10 @@
(test expect collapse-module-path-index (test expect collapse-module-path-index
(module-path-index-join path (module-path-index-join #f #f)) (module-path-index-join path (module-path-index-join #f #f))
rel-to) rel-to)
(unless (and (pair? path) (eq? 'submod (car path)) (equal? (cadr path) ".")) (unless (and (pair? path)
(eq? 'submod (car path))
(or (equal? (cadr path) ".")
(equal? (cadr path) "..")))
(test expect collapse-module-path-index (test expect collapse-module-path-index
(module-path-index-join path (module-path-index-join path
(module-path-index-join (module-path-index-join
@ -258,9 +266,13 @@
(test-cmp (build-path 'same "x.rkt") "x.ss" (build-path 'same)) (test-cmp (build-path 'same "x.rkt") "x.ss" (build-path 'same))
(test-cmp (build-path 'same "x.scm") "x.scm" (build-path 'same)) (test-cmp (build-path 'same "x.scm") "x.scm" (build-path 'same))
(test-cmp ''a '(submod ".") ''a)
(test-cmp '(submod 'a x y) '(submod "." x y) ''a) (test-cmp '(submod 'a x y) '(submod "." x y) ''a)
(test-cmp '(submod 'a q z x y) '(submod "." x y) '(submod 'a q z)) (test-cmp '(submod 'a q z x y) '(submod "." x y) '(submod 'a q z))
(test-cmp '(submod 'a q y) '(submod "." ".." y) '(submod 'a q z)) (test-cmp '(submod 'a q y) '(submod "." ".." y) '(submod 'a q z))
(test-cmp '(submod 'a q y) '(submod ".." y) '(submod 'a q z))
(test-cmp '(submod 'a q) '(submod "..") '(submod 'a q z))
(test-cmp '(submod 'a q y) '(submod ".." y) '(submod 'a q z))
(test-cmp ''a '(submod "." ".." "..") '(submod 'a q z)) (test-cmp ''a '(submod "." ".." "..") '(submod 'a q z))
(test-cmp `(submod ,(build-path 'same) x y) '(submod "." x y) (build-path 'same)) (test-cmp `(submod ,(build-path 'same) x y) '(submod "." x y) (build-path 'same))

View File

@ -389,6 +389,9 @@
(test #t module-path? "x/.") (test #t module-path? "x/.")
(test #t module-path? "x/..") (test #t module-path? "x/..")
(test #t module-path? (collection-file-path "module.rktl" "tests" "racket"))
(test #t module-path? (string->path "x"))
(test #t module-path? 'hello) (test #t module-path? 'hello)
(test #f module-path? 'hello/) (test #f module-path? 'hello/)
(test #f module-path? 'hello.rkt) (test #f module-path? 'hello.rkt)

View File

@ -5,6 +5,44 @@
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(test #t module-path? '(submod "."))
(test #t module-path? '(submod "." x))
(test #t module-path? '(submod "." x y))
(test #t module-path? '(submod "." x ".." y))
(test #t module-path? '(submod "." x ".." y ".." ".." ".."))
(test #f module-path? '(submod "." "x" y))
(test #f module-path? '(submod "." x "y"))
(test #t module-path? '(submod ".."))
(test #t module-path? '(submod ".." x))
(test #t module-path? '(submod ".." x y))
(test #f module-path? '(submod ".." "x" y))
(test #f module-path? '(submod ".." x "y"))
(test #t module-path? '(submod ".." ".."))
(test #f module-path? '(submod ".." "."))
(test #t module-path? '(submod x a b))
(test #f module-path? '(submod x "a" b))
(test #t module-path? '(submod 'x a))
(test #t module-path? '(submod 'x))
(define (check-resolution root [root-mod root])
(test root resolved-module-path-name
(module-path-index-resolve (module-path-index-join `(submod ,root-mod) #f)))
(test root resolved-module-path-name
(module-path-index-resolve (module-path-index-join `(submod ".") (make-resolved-module-path root))))
(test root resolved-module-path-name
(module-path-index-resolve (module-path-index-join `(submod "." "..") (make-resolved-module-path (list root 'y)))))
(test root resolved-module-path-name
(module-path-index-resolve (module-path-index-join `(submod "..") (make-resolved-module-path (list root 'y)))))
(err/rt-test
(module-path-index-resolve (module-path-index-join `(submod "..") (make-resolved-module-path root)))
exn:fail?))
(check-resolution 'x ''x)
(check-resolution (path->complete-path "file.rkt"))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(module subm-example-1 racket/base (module subm-example-1 racket/base
(define x 1) (define x 1)
(provide x) (provide x)

View File

@ -1,5 +1,5 @@
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,49,84,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,50,84,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0, 0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,
13,0,20,0,33,0,38,0,42,0,45,0,50,0,57,0,61,0,66,0,73, 13,0,20,0,33,0,38,0,42,0,45,0,50,0,57,0,61,0,66,0,73,
0,82,0,85,0,91,0,105,0,119,0,122,0,128,0,132,0,134,0,145,0, 0,82,0,85,0,91,0,105,0,119,0,122,0,128,0,132,0,134,0,145,0,
@ -16,12 +16,12 @@
108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1, 108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,
20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121, 20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,
61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240, 61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,
160,77,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16, 237,81,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16,
20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2, 20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,
2,8,2,2,2,9,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97, 2,8,2,2,2,9,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97,
37,11,8,240,160,77,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2, 37,11,8,240,237,81,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2,
37,2,13,2,2,2,13,96,38,11,8,240,160,77,0,0,16,0,96,11,11, 37,2,13,2,2,2,13,96,38,11,8,240,237,81,0,0,16,0,96,11,11,
8,240,160,77,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14, 8,240,237,81,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14,
2,2,11,11,8,32,8,31,8,30,8,29,27,248,22,156,4,195,249,22,149, 2,2,11,11,8,32,8,31,8,30,8,29,27,248,22,156,4,195,249,22,149,
4,80,158,39,36,251,22,83,2,18,248,22,98,199,12,249,22,73,2,19,248, 4,80,158,39,36,251,22,83,2,18,248,22,98,199,12,249,22,73,2,19,248,
22,100,201,27,248,22,156,4,195,249,22,149,4,80,158,39,36,251,22,83,2, 22,100,201,27,248,22,156,4,195,249,22,149,4,80,158,39,36,251,22,83,2,
@ -30,14 +30,14 @@
194,248,22,74,193,249,22,149,4,80,158,39,36,251,22,83,2,18,248,22,74, 194,248,22,74,193,249,22,149,4,80,158,39,36,251,22,83,2,18,248,22,74,
199,249,22,73,2,6,248,22,75,201,11,18,100,10,13,16,5,36,2,14,2, 199,249,22,73,2,6,248,22,75,201,11,18,100,10,13,16,5,36,2,14,2,
2,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101, 2,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,
110,118,49,53,50,52,48,16,4,11,11,2,21,3,1,8,101,110,118,49,53, 110,118,49,53,53,52,49,16,4,11,11,2,21,3,1,8,101,110,118,49,53,
50,52,49,27,248,22,75,248,22,156,4,196,28,248,22,81,193,20,14,159,37, 53,52,50,27,248,22,75,248,22,156,4,196,28,248,22,81,193,20,14,159,37,
36,37,28,248,22,81,248,22,75,194,248,22,74,193,249,22,149,4,80,158,39, 36,37,28,248,22,81,248,22,75,194,248,22,74,193,249,22,149,4,80,158,39,
36,250,22,83,2,22,248,22,83,249,22,83,248,22,83,2,23,248,22,74,201, 36,250,22,83,2,22,248,22,83,249,22,83,248,22,83,2,23,248,22,74,201,
251,22,83,2,18,2,23,2,23,249,22,73,2,7,248,22,75,204,18,100,11, 251,22,83,2,18,2,23,2,23,249,22,73,2,7,248,22,75,204,18,100,11,
13,16,5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,11, 13,16,5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,11,
11,2,20,3,1,8,101,110,118,49,53,50,52,51,16,4,11,11,2,21,3, 11,2,20,3,1,8,101,110,118,49,53,53,52,52,16,4,11,11,2,21,3,
1,8,101,110,118,49,53,50,52,52,248,22,156,4,193,27,248,22,156,4,194, 1,8,101,110,118,49,53,53,52,53,248,22,156,4,193,27,248,22,156,4,194,
249,22,73,248,22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,156, 249,22,73,248,22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,156,
4,23,197,1,249,22,149,4,80,158,39,36,28,248,22,58,248,22,150,4,248, 4,23,197,1,249,22,149,4,80,158,39,36,28,248,22,58,248,22,150,4,248,
22,74,23,198,2,27,249,22,2,32,0,88,163,8,36,37,43,11,9,222,33, 22,74,23,198,2,27,249,22,2,32,0,88,163,8,36,37,43,11,9,222,33,
@ -67,8 +67,8 @@
28,249,22,142,9,248,22,150,4,248,22,74,200,64,101,108,115,101,10,248,22, 28,249,22,142,9,248,22,150,4,248,22,74,200,64,101,108,115,101,10,248,22,
74,197,250,22,84,2,22,9,248,22,75,200,249,22,73,2,11,248,22,75,202, 74,197,250,22,84,2,22,9,248,22,75,200,249,22,73,2,11,248,22,75,202,
99,13,16,5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4, 99,13,16,5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,
11,11,2,20,3,1,8,101,110,118,49,53,50,54,54,16,4,11,11,2,21, 11,11,2,20,3,1,8,101,110,118,49,53,53,54,55,16,4,11,11,2,21,
3,1,8,101,110,118,49,53,50,54,55,18,158,94,10,64,118,111,105,100,8, 3,1,8,101,110,118,49,53,53,54,56,18,158,94,10,64,118,111,105,100,8,
48,27,248,22,75,248,22,156,4,196,249,22,149,4,80,158,39,36,28,248,22, 48,27,248,22,75,248,22,156,4,196,249,22,149,4,80,158,39,36,28,248,22,
58,248,22,150,4,248,22,74,197,250,22,83,2,28,248,22,83,248,22,74,199, 58,248,22,150,4,248,22,74,197,250,22,83,2,28,248,22,83,248,22,74,199,
248,22,98,198,27,248,22,150,4,248,22,74,197,250,22,83,2,28,248,22,83, 248,22,98,198,27,248,22,150,4,248,22,74,197,250,22,83,2,28,248,22,83,
@ -99,7 +99,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 2024); EVAL_ONE_SIZED_STR((char *)expr, 2024);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,49,84,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,50,84,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,1,0,0,8,0, 0,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,1,0,0,8,0,
21,0,26,0,43,0,65,0,94,0,109,0,127,0,139,0,155,0,169,0,191, 21,0,26,0,43,0,65,0,94,0,109,0,127,0,139,0,155,0,169,0,191,
0,207,0,224,0,246,0,1,1,7,1,16,1,23,1,30,1,42,1,58,1, 0,207,0,224,0,246,0,1,1,7,1,16,1,23,1,30,1,42,1,58,1,
@ -599,7 +599,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 10435); EVAL_ONE_SIZED_STR((char *)expr, 10435);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,49,84,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,50,84,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0, 0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0,
40,0,57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0, 40,0,57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,
0,178,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1, 0,178,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,
@ -626,7 +626,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 502); EVAL_ONE_SIZED_STR((char *)expr, 502);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,49,84,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,50,84,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,1,0,0,7,0, 0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,1,0,0,7,0,
18,0,45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,158,0,170, 18,0,45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,158,0,170,
0,185,0,201,0,219,0,239,0,251,0,11,1,34,1,46,1,77,1,84,1, 0,185,0,201,0,219,0,239,0,251,0,11,1,34,1,46,1,77,1,84,1,
@ -634,8 +634,8 @@
1,163,1,170,1,174,1,185,1,192,1,195,1,203,1,212,1,220,1,21,2, 1,163,1,170,1,174,1,185,1,192,1,195,1,203,1,212,1,220,1,21,2,
124,2,145,2,166,2,196,2,226,2,28,3,86,3,135,3,184,3,32,10,83, 124,2,145,2,166,2,196,2,226,2,28,3,86,3,135,3,184,3,32,10,83,
10,146,10,165,10,179,10,81,11,94,11,228,11,14,13,137,13,143,13,171,13, 10,146,10,165,10,179,10,81,11,94,11,228,11,14,13,137,13,143,13,171,13,
184,13,81,14,88,14,142,14,164,14,184,14,239,14,249,14,80,15,82,15,185, 184,13,90,14,97,14,151,14,173,14,193,14,248,14,2,15,89,15,91,15,194,
15,202,23,255,23,23,24,47,24,0,0,177,27,0,0,66,35,37,98,111,111, 15,38,24,91,24,115,24,139,24,0,0,13,28,0,0,66,35,37,98,111,111,
116,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,117,108,116, 116,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,117,108,116,
45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,65,113,117, 45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,65,113,117,
111,116,101,29,94,2,4,67,35,37,117,116,105,108,115,11,68,35,37,112,97, 111,116,101,29,94,2,4,67,35,37,117,116,105,108,115,11,68,35,37,112,97,
@ -807,177 +807,181 @@
249,22,144,9,248,22,74,23,199,2,2,32,28,248,22,81,23,196,2,86,95, 249,22,144,9,248,22,74,23,199,2,2,32,28,248,22,81,23,196,2,86,95,
23,196,1,23,195,1,250,22,175,9,2,21,6,37,37,116,111,111,32,109,97, 23,196,1,23,195,1,250,22,175,9,2,21,6,37,37,116,111,111,32,109,97,
110,121,32,34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101, 110,121,32,34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,
32,112,97,116,104,58,32,126,46,115,250,22,84,2,31,28,249,22,144,9,200, 32,112,97,116,104,58,32,126,46,115,250,22,84,2,31,28,249,22,144,9,23,
2,33,198,249,22,83,28,248,22,58,201,2,4,2,34,200,199,251,2,65,196, 201,2,2,33,198,28,248,22,159,14,199,198,249,22,83,28,248,22,58,201,2,
197,248,22,75,199,248,22,75,200,251,2,65,196,197,249,22,73,248,22,74,202, 4,2,34,200,199,251,2,65,196,197,248,22,75,199,248,22,75,200,251,2,65,
200,248,22,75,200,251,2,65,196,197,9,197,27,249,22,155,7,6,31,31,115, 196,197,249,22,73,248,22,74,202,200,248,22,75,200,251,2,65,196,197,9,197,
116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114, 27,249,22,155,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,
101,115,111,108,118,101,114,58,32,196,28,193,250,22,177,9,11,195,196,248,22, 108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,196,28,193,
175,9,193,28,249,22,138,7,194,2,33,2,27,28,249,22,138,7,194,2,32, 250,22,177,9,11,195,196,248,22,175,9,193,28,249,22,138,7,194,2,33,2,
62,117,112,192,32,70,88,163,8,36,37,50,11,67,115,115,45,62,114,107,116, 27,28,249,22,138,7,194,2,32,62,117,112,192,32,70,88,163,8,36,37,50,
222,33,71,27,248,22,135,7,194,28,249,22,188,3,194,39,28,249,22,138,7, 11,67,115,115,45,62,114,107,116,222,33,71,27,248,22,135,7,194,28,249,22,
6,3,3,46,115,115,249,22,154,7,197,249,22,176,3,198,39,249,22,155,7, 188,3,194,39,28,249,22,138,7,6,3,3,46,115,115,249,22,154,7,197,249,
250,22,154,7,198,36,249,22,176,3,199,39,2,38,193,193,0,8,35,114,120, 22,176,3,198,39,249,22,155,7,250,22,154,7,198,36,249,22,176,3,199,39,
34,91,46,93,34,28,249,22,144,9,248,22,75,23,200,2,23,197,1,28,249, 2,38,193,193,0,8,35,114,120,34,91,46,93,34,28,249,22,144,9,248,22,
22,142,9,248,22,74,23,200,2,23,196,1,251,22,175,9,2,21,6,28,28, 75,23,200,2,23,197,1,28,249,22,142,9,248,22,74,23,200,2,23,196,1,
99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126, 251,22,175,9,2,21,6,28,28,99,121,99,108,101,32,105,110,32,108,111,97,
46,115,58,32,126,46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73, 100,105,110,103,32,97,116,32,126,46,115,58,32,126,46,115,23,200,1,249,22,
23,206,1,23,202,1,12,12,247,192,20,13,159,80,159,43,48,38,249,22,73, 2,22,75,248,22,88,249,22,73,23,206,1,23,202,1,12,12,247,192,20,13,
249,22,73,248,22,172,15,247,22,137,13,23,201,1,23,195,1,20,13,159,80, 159,80,159,43,48,38,249,22,73,249,22,73,248,22,172,15,247,22,137,13,23,
159,43,40,37,250,80,159,46,41,37,249,22,27,11,80,159,48,40,37,22,181, 201,1,23,195,1,20,13,159,80,159,43,40,37,250,80,159,46,41,37,249,22,
4,23,198,2,249,247,22,163,5,23,200,1,27,248,22,61,248,22,163,14,23, 27,11,80,159,48,40,37,22,181,4,23,198,2,249,247,22,163,5,23,200,1,
201,1,28,23,202,2,28,250,22,153,2,23,200,1,23,201,1,11,249,22,73, 27,248,22,61,248,22,163,14,23,201,1,28,23,202,2,28,250,22,153,2,23,
11,203,249,22,73,194,203,192,86,94,28,28,248,22,159,14,23,197,2,10,248, 200,1,23,201,1,11,249,22,73,11,203,249,22,73,194,203,192,86,94,28,28,
22,148,5,23,197,2,12,28,23,198,2,250,22,177,9,11,6,15,15,98,97, 248,22,159,14,23,197,2,10,248,22,148,5,23,197,2,12,28,23,198,2,250,
100,32,109,111,100,117,108,101,32,112,97,116,104,23,201,2,250,22,178,9,2, 22,177,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,
21,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97, 104,23,201,2,250,22,178,9,2,21,6,19,19,109,111,100,117,108,101,45,112,
116,104,23,199,2,28,28,248,22,71,23,197,2,249,22,142,9,248,22,74,23, 97,116,104,32,111,114,32,112,97,116,104,23,199,2,28,28,248,22,71,23,197,
199,2,2,4,11,248,22,139,5,248,22,98,197,28,28,248,22,71,23,197,2, 2,249,22,142,9,248,22,74,23,199,2,2,4,11,248,22,139,5,248,22,98,
28,249,22,142,9,248,22,74,23,199,2,2,31,28,248,22,71,248,22,98,23, 197,28,28,248,22,71,23,197,2,28,249,22,142,9,248,22,74,23,199,2,2,
198,2,249,22,142,9,248,22,102,23,199,2,2,4,11,11,11,86,98,23,199, 31,28,248,22,71,248,22,98,23,198,2,249,22,142,9,248,22,102,23,199,2,
1,23,198,1,23,197,1,23,194,1,23,193,1,248,22,139,5,249,2,64,248, 2,4,11,11,11,86,98,23,199,1,23,198,1,23,197,1,23,194,1,23,193,
22,115,23,200,2,248,22,100,23,200,1,28,28,248,22,71,23,197,2,28,249, 1,248,22,139,5,249,2,64,248,22,115,23,200,2,248,22,100,23,200,1,28,
22,142,9,248,22,74,23,199,2,2,31,28,249,22,144,9,248,22,98,23,199, 28,248,22,71,23,197,2,28,249,22,142,9,248,22,74,23,199,2,2,31,28,
2,2,33,28,23,197,2,27,248,22,140,5,23,199,2,28,248,22,58,193,10, 28,249,22,144,9,248,22,98,23,199,2,2,33,10,249,22,144,9,248,22,98,
28,248,22,71,193,248,22,58,248,22,74,194,11,11,11,11,11,86,97,23,199, 23,199,2,2,32,28,23,197,2,27,248,22,140,5,23,199,2,28,248,22,58,
1,23,198,1,23,194,1,23,193,1,27,248,22,140,5,23,199,1,248,22,139, 193,10,28,248,22,71,193,248,22,58,248,22,74,194,11,11,11,11,11,86,97,
5,249,2,64,28,248,22,71,23,197,2,248,22,74,23,197,2,23,196,2,28, 23,199,1,23,198,1,23,194,1,23,193,1,27,248,22,140,5,23,199,1,248,
248,22,71,23,197,2,249,22,87,248,22,75,23,199,1,248,22,100,23,203,1, 22,139,5,249,2,64,28,248,22,71,23,197,2,248,22,74,23,197,2,23,196,
86,94,23,196,1,248,22,100,23,201,1,28,28,248,22,71,23,197,2,249,22, 2,27,28,249,22,144,9,248,22,98,23,204,2,2,32,248,22,75,201,248,22,
142,9,248,22,74,23,199,2,2,35,11,86,94,23,193,1,86,94,28,208,12, 100,201,28,248,22,71,23,198,2,249,22,87,248,22,75,199,194,192,28,28,248,
20,13,159,80,159,38,55,37,80,158,38,53,89,161,37,37,10,249,22,183,4, 22,71,23,197,2,249,22,142,9,248,22,74,23,199,2,2,35,11,86,94,23,
21,94,2,36,6,19,19,112,108,97,110,101,116,47,114,101,115,111,108,118,101, 193,1,86,94,28,208,12,20,13,159,80,159,38,55,37,80,158,38,53,89,161,
114,46,114,107,116,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45, 37,37,10,249,22,183,4,21,94,2,36,6,19,19,112,108,97,110,101,116,47,
110,97,109,101,45,114,101,115,111,108,118,101,114,12,252,213,200,201,202,203,80, 114,101,115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45,
158,43,53,86,94,23,194,1,28,28,248,22,71,23,197,2,28,249,22,142,9, 109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,
248,22,74,23,199,2,2,31,28,248,22,71,248,22,98,23,198,2,249,22,142, 252,213,200,201,202,203,80,158,43,53,86,94,23,194,1,28,28,248,22,71,23,
9,248,22,102,23,199,2,2,35,11,11,11,35,251,24,198,1,248,22,98,201, 197,2,28,249,22,142,9,248,22,74,23,199,2,2,31,28,248,22,71,248,22,
23,202,2,23,203,1,23,204,1,27,248,22,140,5,23,200,1,28,248,22,71, 98,23,198,2,249,22,142,9,248,22,102,23,199,2,2,35,11,11,11,35,251,
193,249,2,64,248,22,74,195,249,22,87,248,22,75,197,248,22,100,202,249,2, 24,198,1,248,22,98,201,23,202,2,23,203,1,23,204,1,27,248,22,140,5,
64,194,248,22,100,200,86,94,23,193,1,27,88,163,8,36,37,47,11,79,115, 23,200,1,28,248,22,71,193,249,2,64,248,22,74,195,249,22,87,248,22,75,
104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,6,33, 197,248,22,100,202,249,2,64,194,248,22,100,200,86,94,23,193,1,27,88,163,
68,27,28,248,22,71,23,199,2,28,249,22,142,9,2,31,248,22,74,23,201, 8,36,37,47,11,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,
2,27,248,22,98,23,200,2,28,249,22,144,9,23,195,2,2,33,86,94,23, 45,101,114,114,223,6,33,68,27,28,248,22,71,23,199,2,28,249,22,142,9,
193,1,28,23,200,2,27,248,22,140,5,23,202,2,28,248,22,71,193,248,22, 2,31,248,22,74,23,201,2,27,248,22,98,23,200,2,28,28,249,22,144,9,
74,193,192,250,22,175,9,2,21,6,45,45,110,111,32,98,97,115,101,32,112, 23,195,2,2,33,10,249,22,144,9,23,195,2,2,32,86,94,23,193,1,28,
97,116,104,32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109, 23,200,2,27,248,22,140,5,23,202,2,28,248,22,71,193,248,22,74,193,192,
111,100,117,108,101,32,112,97,116,104,58,32,126,46,115,23,202,2,192,23,198, 250,22,175,9,2,21,6,45,45,110,111,32,98,97,115,101,32,112,97,116,104,
2,23,198,2,27,28,248,22,71,23,200,2,28,249,22,142,9,2,31,248,22, 32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109,111,100,117,
74,23,202,2,27,28,28,249,22,144,9,248,22,98,23,203,2,2,33,23,201, 108,101,32,112,97,116,104,58,32,126,46,115,23,202,2,192,23,198,2,23,198,
2,11,27,248,22,140,5,23,203,2,28,248,22,71,23,194,2,249,2,64,248, 2,27,28,248,22,71,23,200,2,28,249,22,142,9,2,31,248,22,74,23,202,
22,74,23,196,2,249,22,87,248,22,75,23,198,1,248,22,100,23,206,1,249, 2,27,28,28,28,249,22,144,9,248,22,98,23,203,2,2,33,10,249,22,144,
2,64,23,195,1,248,22,100,23,204,1,249,2,64,2,33,248,22,100,23,203, 9,248,22,98,23,203,2,2,32,23,201,2,11,27,248,22,140,5,23,203,2,
1,28,248,22,71,193,248,22,75,193,11,11,11,27,28,248,22,58,23,196,2, 27,28,249,22,144,9,248,22,98,23,205,2,2,32,248,22,75,23,203,1,248,
27,248,80,159,44,46,39,249,22,73,23,199,2,247,22,137,15,28,23,193,2, 22,100,23,203,1,28,248,22,71,23,195,2,249,2,64,248,22,74,23,197,2,
192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,159,47,52,39, 249,22,87,248,22,75,23,199,1,23,197,1,249,2,64,23,196,1,23,195,1,
248,22,64,23,201,2,11,27,28,248,22,81,23,195,2,2,37,249,22,155,7, 249,2,64,2,33,28,249,22,144,9,248,22,98,23,205,2,2,32,248,22,75,
23,197,2,2,38,251,80,159,50,57,39,23,204,1,28,248,22,81,23,199,2, 23,203,1,248,22,100,23,203,1,28,248,22,71,193,248,22,75,193,11,11,11,
23,199,1,86,94,23,199,1,248,22,74,23,199,2,28,248,22,81,23,199,2, 27,28,248,22,58,23,196,2,27,248,80,159,44,46,39,249,22,73,23,199,2,
86,94,23,198,1,9,248,22,75,23,199,1,23,197,1,28,248,22,132,7,23, 247,22,137,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,
196,2,86,94,23,196,1,27,248,80,159,44,8,26,39,23,203,2,27,248,80, 36,11,249,80,159,47,52,39,248,22,64,23,201,2,11,27,28,248,22,81,23,
159,45,46,39,249,22,73,23,200,2,23,197,2,28,23,193,2,192,86,94,23, 195,2,2,37,249,22,155,7,23,197,2,2,38,251,80,159,50,57,39,23,204,
193,1,90,159,38,11,89,161,38,36,11,249,80,159,48,52,39,23,201,2,11, 1,28,248,22,81,23,199,2,23,199,1,86,94,23,199,1,248,22,74,23,199,
250,22,1,22,177,14,23,199,1,249,22,87,249,22,2,32,0,88,163,8,36, 2,28,248,22,81,23,199,2,86,94,23,198,1,9,248,22,75,23,199,1,23,
37,44,11,9,222,33,69,23,200,1,248,22,83,248,2,70,23,201,1,28,248, 197,1,28,248,22,132,7,23,196,2,86,94,23,196,1,27,248,80,159,44,8,
22,159,14,23,196,2,86,94,23,196,1,248,80,159,43,8,27,39,248,22,186, 26,39,23,203,2,27,248,80,159,45,46,39,249,22,73,23,200,2,23,197,2,
14,28,248,22,183,14,23,198,2,23,197,2,249,22,184,14,23,199,2,248,80, 28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,
159,47,8,26,39,23,206,2,28,249,22,142,9,248,22,74,23,198,2,2,36, 159,48,52,39,23,201,2,11,250,22,1,22,177,14,23,199,1,249,22,87,249,
27,248,80,159,44,46,39,249,22,73,23,199,2,247,22,137,15,28,23,193,2, 22,2,32,0,88,163,8,36,37,44,11,9,222,33,69,23,200,1,248,22,83,
192,86,94,23,193,1,90,159,39,11,89,161,38,36,11,249,80,159,48,52,39, 248,2,70,23,201,1,28,248,22,159,14,23,196,2,86,94,23,196,1,248,80,
248,22,98,23,202,2,11,89,161,37,38,11,28,248,22,81,248,22,100,23,201, 159,43,8,27,39,248,22,186,14,28,248,22,183,14,23,198,2,23,197,2,249,
2,28,248,22,81,23,194,2,249,22,151,15,2,72,23,196,2,11,10,27,28, 22,184,14,23,199,2,248,80,159,47,8,26,39,23,206,2,28,249,22,142,9,
23,196,2,248,2,70,23,196,2,28,248,22,81,23,195,2,2,37,28,249,22, 248,22,74,23,198,2,2,36,27,248,80,159,44,46,39,249,22,73,23,199,2,
151,15,2,72,23,197,2,248,2,70,23,196,2,249,22,155,7,23,197,2,2, 247,22,137,15,28,23,193,2,192,86,94,23,193,1,90,159,39,11,89,161,38,
38,27,28,23,197,1,86,94,23,196,1,249,22,87,28,248,22,81,248,22,100, 36,11,249,80,159,48,52,39,248,22,98,23,202,2,11,89,161,37,38,11,28,
23,205,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,87,249,22,2, 248,22,81,248,22,100,23,201,2,28,248,22,81,23,194,2,249,22,151,15,2,
80,159,54,8,28,39,248,22,100,23,208,2,23,197,1,28,248,22,81,23,196, 72,23,196,2,11,10,27,28,23,196,2,248,2,70,23,196,2,28,248,22,81,
2,86,94,23,195,1,248,22,83,23,197,1,86,94,23,196,1,23,195,1,251, 23,195,2,2,37,28,249,22,151,15,2,72,23,197,2,248,2,70,23,196,2,
80,159,52,57,39,23,206,1,248,22,74,23,198,2,248,22,75,23,198,1,23, 249,22,155,7,23,197,2,2,38,27,28,23,197,1,86,94,23,196,1,249,22,
198,1,28,249,22,142,9,248,22,74,23,198,2,2,34,248,80,159,43,8,27, 87,28,248,22,81,248,22,100,23,205,2,21,93,6,5,5,109,122,108,105,98,
39,248,22,186,14,249,22,184,14,248,22,188,14,248,22,98,23,201,2,248,80, 249,22,1,22,87,249,22,2,80,159,54,8,28,39,248,22,100,23,208,2,23,
159,47,8,26,39,23,206,2,12,86,94,28,28,248,22,159,14,23,194,2,10, 197,1,28,248,22,81,23,196,2,86,94,23,195,1,248,22,83,23,197,1,86,
248,22,157,8,23,194,2,86,94,23,202,1,12,28,23,202,2,250,22,177,9, 94,23,196,1,23,195,1,251,80,159,52,57,39,23,206,1,248,22,74,23,198,
67,114,101,113,117,105,114,101,249,22,180,7,6,17,17,98,97,100,32,109,111, 2,248,22,75,23,198,1,23,198,1,28,249,22,142,9,248,22,74,23,198,2,
100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2, 2,34,248,80,159,43,8,27,39,248,22,186,14,249,22,184,14,248,22,188,14,
2,39,23,205,1,86,94,23,202,1,250,22,178,9,2,21,249,22,180,7,6, 248,22,98,23,201,2,248,80,159,47,8,26,39,23,206,2,12,86,94,28,28,
13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22, 248,22,159,14,23,194,2,10,248,22,157,8,23,194,2,86,94,23,202,1,12,
74,23,199,2,2,39,23,198,2,27,28,248,22,157,8,23,195,2,249,22,162, 28,23,202,2,250,22,177,9,67,114,101,113,117,105,114,101,249,22,180,7,6,
8,23,196,2,36,249,22,186,14,248,22,187,14,23,197,2,11,27,28,248,22, 17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,
157,8,23,196,2,249,22,162,8,23,197,2,37,248,80,159,45,58,39,23,195, 198,2,248,22,74,23,199,2,2,39,23,205,1,86,94,23,202,1,250,22,178,
2,90,159,39,11,89,161,39,36,11,28,248,22,157,8,23,199,2,250,22,7, 9,2,21,249,22,180,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,
2,40,249,22,162,8,23,203,2,38,2,40,248,22,180,14,23,198,2,86,95, 126,97,28,23,198,2,248,22,74,23,199,2,2,39,23,198,2,27,28,248,22,
23,195,1,23,193,1,27,28,248,22,157,8,23,200,2,249,22,162,8,23,201, 157,8,23,195,2,249,22,162,8,23,196,2,36,249,22,186,14,248,22,187,14,
2,39,249,80,159,50,56,39,23,197,2,5,0,27,28,248,22,157,8,23,201, 23,197,2,11,27,28,248,22,157,8,23,196,2,249,22,162,8,23,197,2,37,
2,249,22,162,8,23,202,2,40,248,22,139,5,23,200,2,27,250,22,153,2, 248,80,159,45,58,39,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,
80,159,53,43,38,248,22,172,15,247,22,137,13,11,27,28,23,194,2,23,194, 157,8,23,199,2,250,22,7,2,40,249,22,162,8,23,203,2,38,2,40,248,
1,86,94,23,194,1,27,247,22,133,2,86,94,250,22,151,2,80,159,55,43, 22,180,14,23,198,2,86,95,23,195,1,23,193,1,27,28,248,22,157,8,23,
38,248,22,172,15,247,22,137,13,195,192,27,28,23,204,2,248,22,139,5,249, 200,2,249,22,162,8,23,201,2,39,249,80,159,50,56,39,23,197,2,5,0,
22,73,248,22,140,5,23,200,2,23,207,2,23,196,2,86,95,28,23,213,1, 27,28,248,22,157,8,23,201,2,249,22,162,8,23,202,2,40,248,22,139,5,
27,250,22,153,2,23,198,2,196,11,28,23,193,1,12,86,94,27,27,28,248, 23,200,2,27,250,22,153,2,80,159,53,43,38,248,22,172,15,247,22,137,13,
22,17,80,159,56,49,38,80,159,55,49,38,247,22,19,251,22,27,11,80,159, 11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,247,22,133,2,86,94,
59,48,38,9,23,197,1,27,248,22,172,15,247,22,137,13,86,94,249,22,3, 250,22,151,2,80,159,55,43,38,248,22,172,15,247,22,137,13,195,192,27,28,
20,20,94,88,163,8,36,37,55,11,9,226,14,13,2,3,33,73,23,195,1, 23,204,2,248,22,139,5,249,22,73,248,22,140,5,23,200,2,23,207,2,23,
23,196,2,248,28,248,22,17,80,159,57,49,38,32,0,88,163,36,37,42,11, 196,2,86,95,28,23,213,1,27,250,22,153,2,23,198,2,196,11,28,23,193,
9,222,33,74,80,159,56,8,29,39,20,20,95,88,163,36,36,55,8,176,64, 1,12,86,94,27,27,28,248,22,17,80,159,56,49,38,80,159,55,49,38,247,
9,230,20,15,13,12,8,7,5,2,33,75,23,195,1,23,208,1,250,22,151, 22,19,251,22,27,11,80,159,59,48,38,9,23,197,1,27,248,22,172,15,247,
2,23,198,1,196,10,12,28,28,248,22,157,8,23,204,1,11,28,248,22,132, 22,137,13,86,94,249,22,3,20,20,94,88,163,8,36,37,55,11,9,226,14,
7,23,206,2,10,28,248,22,58,23,206,2,10,28,248,22,71,23,206,2,249, 13,2,3,33,73,23,195,1,23,196,2,248,28,248,22,17,80,159,57,49,38,
22,142,9,248,22,74,23,208,2,2,36,11,249,80,159,54,47,39,28,248,22, 32,0,88,163,36,37,42,11,9,222,33,74,80,159,56,8,29,39,20,20,95,
132,7,23,208,2,249,22,73,23,209,1,248,80,159,57,8,26,39,23,216,1, 88,163,36,36,55,8,176,64,9,230,20,15,13,12,8,7,5,2,33,75,23,
86,94,23,213,1,249,22,73,23,209,1,247,22,137,15,252,22,159,8,23,209, 195,1,23,208,1,250,22,151,2,23,198,1,196,10,12,28,28,248,22,157,8,
1,23,208,1,23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,159,11, 23,204,1,11,28,248,22,132,7,23,206,2,10,28,248,22,58,23,206,2,10,
80,158,36,53,248,80,159,37,8,25,37,249,22,27,11,80,159,39,55,37,248, 28,248,22,71,23,206,2,249,22,142,9,248,22,74,23,208,2,2,36,11,249,
22,180,4,80,159,37,54,38,248,22,163,5,80,159,37,37,39,248,22,128,14, 80,159,54,47,39,28,248,22,132,7,23,208,2,249,22,73,23,209,1,248,80,
80,159,37,42,39,20,18,159,11,80,158,36,53,248,80,159,37,8,25,37,249, 159,57,8,26,39,23,216,1,86,94,23,213,1,249,22,73,23,209,1,247,22,
22,27,11,80,159,39,55,37,20,18,159,11,80,158,36,53,248,80,159,37,8, 137,15,252,22,159,8,23,209,1,23,208,1,23,206,1,23,204,1,23,203,1,
25,37,249,22,27,11,80,159,39,55,37,159,36,20,113,159,36,16,1,11,16, 12,192,86,96,20,18,159,11,80,158,36,53,248,80,159,37,8,25,37,249,22,
0,20,26,144,9,2,1,2,1,29,11,11,9,9,11,11,11,10,38,80,158, 27,11,80,159,39,55,37,248,22,180,4,80,159,37,54,38,248,22,163,5,80,
36,36,20,113,159,40,16,26,2,2,2,3,30,2,5,72,112,97,116,104,45, 159,37,37,39,248,22,128,14,80,159,37,42,39,20,18,159,11,80,158,36,53,
115,116,114,105,110,103,63,11,30,2,5,75,112,97,116,104,45,97,100,100,45, 248,80,159,37,8,25,37,249,22,27,11,80,159,39,55,37,20,18,159,11,80,
115,117,102,102,105,120,8,30,2,7,2,8,6,30,2,7,1,23,101,120,116, 158,36,53,248,80,159,37,8,25,37,249,22,27,11,80,159,39,55,37,159,36,
101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3, 20,113,159,36,16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,9,
2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2, 9,11,11,11,10,38,80,158,36,36,20,113,159,40,16,26,2,2,2,3,30,
19,2,20,2,21,30,2,22,2,8,6,30,2,5,79,112,97,116,104,45,114, 2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112,
101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102,105,110, 97,116,104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,6,
100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109,97,108, 30,2,7,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,
45,99,97,115,101,45,112,97,116,104,7,2,23,2,24,30,2,22,74,114,101, 105,122,97,116,105,111,110,3,2,9,2,10,2,11,2,12,2,13,2,14,2,
112,97,114,97,109,101,116,101,114,105,122,101,7,16,0,37,39,36,16,0,36, 15,2,16,2,17,2,18,2,19,2,20,2,21,30,2,22,2,8,6,30,2,
16,14,2,15,2,16,2,10,2,12,2,17,2,18,2,11,2,3,2,9,2, 5,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,
2,2,13,2,14,2,19,2,21,50,11,11,11,16,3,2,23,2,20,2,24, 10,30,2,5,73,102,105,110,100,45,99,111,108,45,102,105,108,101,3,30,2,
16,3,11,11,11,16,3,2,23,2,20,2,24,39,39,37,12,11,11,16,0, 5,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,7,2,23,
16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,21,20, 2,24,30,2,22,74,114,101,112,97,114,97,109,101,116,101,114,105,122,101,7,
15,16,2,88,163,36,37,45,8,128,128,9,223,0,33,41,80,159,36,8,29, 16,0,37,39,36,16,0,36,16,14,2,15,2,16,2,10,2,12,2,17,2,
39,20,15,16,2,88,163,8,36,37,45,8,240,0,0,1,0,9,223,0,33, 18,2,11,2,3,2,9,2,2,2,13,2,14,2,19,2,21,50,11,11,11,
42,80,159,36,8,28,39,20,15,16,2,88,163,36,37,49,8,240,0,0,16, 16,3,2,23,2,20,2,24,16,3,11,11,11,16,3,2,23,2,20,2,24,
0,72,112,97,116,104,45,115,115,45,62,114,107,116,223,0,33,43,80,159,36, 39,39,37,12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,
8,27,39,20,15,16,2,88,163,36,37,49,8,240,0,192,0,0,67,103,101, 0,16,0,36,36,16,21,20,15,16,2,88,163,36,37,45,8,128,128,9,223,
116,45,100,105,114,223,0,33,44,80,159,36,8,26,39,20,15,16,2,248,22, 0,33,41,80,159,36,8,29,39,20,15,16,2,88,163,8,36,37,45,8,240,
154,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36,37,20,15,16,2, 0,0,1,0,9,223,0,33,42,80,159,36,8,28,39,20,15,16,2,88,163,
88,163,36,38,8,38,8,61,2,3,223,0,33,53,80,159,36,37,37,20,15, 36,37,49,8,240,0,0,16,0,72,112,97,116,104,45,115,115,45,62,114,107,
16,2,20,27,158,32,0,88,163,8,36,37,42,11,2,9,222,192,32,0,88, 116,223,0,33,43,80,159,36,8,27,39,20,15,16,2,88,163,36,37,49,8,
163,8,36,37,42,11,2,9,222,192,80,159,36,42,37,20,15,16,2,247,22, 240,0,192,0,0,67,103,101,116,45,100,105,114,223,0,33,44,80,159,36,8,
136,2,80,159,36,43,37,20,15,16,2,8,128,8,80,159,36,44,37,20,15, 26,39,20,15,16,2,248,22,154,8,69,115,111,45,115,117,102,102,105,120,80,
16,2,249,22,158,8,8,128,8,11,80,159,36,45,37,20,15,16,2,88,163, 159,36,36,37,20,15,16,2,88,163,36,38,8,38,8,61,2,3,223,0,33,
8,36,37,50,8,128,8,2,13,223,0,33,54,80,159,36,46,37,20,15,16, 53,80,159,36,37,37,20,15,16,2,20,27,158,32,0,88,163,8,36,37,42,
2,88,163,8,36,38,55,8,128,8,2,14,223,0,33,55,80,159,36,47,37, 11,2,9,222,192,32,0,88,163,8,36,37,42,11,2,9,222,192,80,159,36,
20,15,16,2,247,22,69,80,159,36,48,37,20,15,16,2,248,22,18,74,109, 42,37,20,15,16,2,247,22,136,2,80,159,36,43,37,20,15,16,2,8,128,
111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,36,49,37,20,15,16, 8,80,159,36,44,37,20,15,16,2,249,22,158,8,8,128,8,11,80,159,36,
2,11,80,158,36,50,20,15,16,2,11,80,158,36,51,20,15,16,2,32,0, 45,37,20,15,16,2,88,163,8,36,37,50,8,128,8,2,13,223,0,33,54,
88,163,36,38,8,25,11,2,19,222,33,61,80,159,36,52,37,20,15,16,2, 80,159,36,46,37,20,15,16,2,88,163,8,36,38,55,8,128,8,2,14,223,
11,80,158,36,53,20,15,16,2,27,11,20,19,158,36,90,159,37,10,89,161, 0,33,55,80,159,36,47,37,20,15,16,2,247,22,69,80,159,36,48,37,20,
37,36,10,20,25,96,2,21,88,163,8,36,37,51,8,128,2,9,224,2,1, 15,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110,103,
33,62,88,163,36,39,49,11,9,223,0,33,63,88,163,36,40,8,33,16,2, 80,159,36,49,37,20,15,16,2,11,80,158,36,50,20,15,16,2,11,80,158,
8,176,242,8,187,241,9,225,2,1,0,33,76,207,80,159,36,54,37,20,15, 36,51,20,15,16,2,32,0,88,163,36,38,8,25,11,2,19,222,33,61,80,
16,2,88,163,36,36,45,8,240,66,0,14,2,2,23,223,0,33,77,80,159, 159,36,52,37,20,15,16,2,11,80,158,36,53,20,15,16,2,27,11,20,19,
36,59,37,20,15,16,2,20,27,158,88,163,8,36,36,45,8,240,0,0,10, 158,36,90,159,37,10,89,161,37,36,10,20,25,96,2,21,88,163,8,36,37,
2,2,24,223,0,33,78,88,163,8,36,36,45,8,240,0,0,10,2,2,24, 51,8,128,2,9,224,2,1,33,62,88,163,36,39,49,11,9,223,0,33,63,
223,0,33,79,80,159,36,8,24,37,96,29,94,2,4,68,35,37,107,101,114, 88,163,36,40,8,33,16,2,8,176,242,8,187,241,9,225,2,1,0,33,76,
110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,5, 207,80,159,36,54,37,20,15,16,2,88,163,36,36,45,8,240,66,0,14,2,
2,22,9,9,9,36,0}; 2,23,223,0,33,77,80,159,36,59,37,20,15,16,2,20,27,158,88,163,8,
EVAL_ONE_SIZED_STR((char *)expr, 7293); 36,36,45,8,240,0,0,10,2,2,24,223,0,33,78,88,163,8,36,36,45,
8,240,0,0,10,2,2,24,223,0,33,79,80,159,36,8,24,37,96,29,94,
2,4,68,35,37,107,101,114,110,101,108,11,29,94,2,4,69,35,37,109,105,
110,45,115,116,120,11,2,5,2,22,9,9,9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 7385);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,49,84,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,53,46,50,46,57,48,48,46,50,84,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0, 0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,
16,0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,97, 16,0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,97,
1,0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94, 1,0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,
@ -986,7 +990,7 @@
2,2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2, 2,2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,
2,66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98, 2,66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,
115,11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240, 115,11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,
151,79,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159, 235,83,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,
2,6,36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2, 2,6,36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,
9,36,36,16,0,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2, 9,36,36,16,0,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2,
1,2,1,29,11,11,9,9,11,11,11,18,96,11,46,46,46,36,80,158,36, 1,2,1,29,11,11,9,9,11,11,11,18,96,11,46,46,46,36,80,158,36,

View File

@ -2305,30 +2305,32 @@ int scheme_is_module_path(Scheme_Object *obj)
if (SCHEME_PAIRP(obj) if (SCHEME_PAIRP(obj)
&& (SAME_OBJ(SCHEME_CAR(obj), submod_symbol))) { && (SAME_OBJ(SCHEME_CAR(obj), submod_symbol))) {
Scheme_Object *p, *a; Scheme_Object *p, *a;
int len = 0;
p = SCHEME_CDR(obj); p = SCHEME_CDR(obj);
if (SCHEME_PAIRP(p)) { if (SCHEME_PAIRP(p)) {
p = SCHEME_CDR(p); p = SCHEME_CDR(p);
if (SCHEME_PAIRP(p)) { while (SCHEME_PAIRP(p)) {
while (SCHEME_PAIRP(p)) { len++;
a = SCHEME_CAR(p); a = SCHEME_CAR(p);
if (!SCHEME_SYMBOLP(a) if (!SCHEME_SYMBOLP(a)
&& (!SCHEME_CHAR_STRINGP(a) && (!SCHEME_CHAR_STRINGP(a)
|| (SCHEME_CHAR_STRLEN_VAL(a) != 2) || (SCHEME_CHAR_STRLEN_VAL(a) != 2)
|| (SCHEME_CHAR_STR_VAL(a)[0] != '.') || (SCHEME_CHAR_STR_VAL(a)[0] != '.')
|| (SCHEME_CHAR_STR_VAL(a)[1] != '.'))) || (SCHEME_CHAR_STR_VAL(a)[1] != '.')))
break; break;
p = SCHEME_CDR(p); p = SCHEME_CDR(p);
} }
} else
p = scheme_false;
} else } else
p = scheme_false; p = scheme_false;
if (SCHEME_NULLP(p)) { if (SCHEME_NULLP(p)) {
obj = SCHEME_CDR(obj); obj = SCHEME_CDR(obj);
obj = SCHEME_CAR(obj); obj = SCHEME_CAR(obj);
if (SCHEME_CHAR_STRINGP(obj) if (SCHEME_CHAR_STRINGP(obj)
&& (SCHEME_CHAR_STRLEN_VAL(obj) == 1) && (((SCHEME_CHAR_STRLEN_VAL(obj) == 1)
&& (SCHEME_CHAR_STR_VAL(obj)[0] == '.')) && (SCHEME_CHAR_STR_VAL(obj)[0] == '.'))
|| ((SCHEME_CHAR_STRLEN_VAL(obj) == 2)
&& (SCHEME_CHAR_STR_VAL(obj)[0] == '.')
&& (SCHEME_CHAR_STR_VAL(obj)[1] == '.'))))
return 1; return 1;
} }
} }
@ -6512,9 +6514,8 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env,
Scheme_Object *rn; Scheme_Object *rn;
iidx = scheme_make_modidx(scheme_make_pair(submod_symbol, iidx = scheme_make_modidx(scheme_make_pair(submod_symbol,
scheme_make_pair(scheme_make_utf8_string("."), scheme_make_pair(scheme_make_utf8_string(".."),
scheme_make_pair(scheme_make_utf8_string(".."), scheme_null)),
scheme_null))),
self_modidx, self_modidx,
scheme_false); scheme_false);

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "5.2.900.1" #define MZSCHEME_VERSION "5.2.900.2"
#define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Y 2
#define MZSCHEME_VERSION_Z 900 #define MZSCHEME_VERSION_Z 900
#define MZSCHEME_VERSION_W 1 #define MZSCHEME_VERSION_W 2
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -839,7 +839,9 @@
"(list* 'submod" "(list* 'submod"
" (if (equal? base \".\") " " (if (equal? base \".\") "
" base " " base "
"(list(if(symbol? base) 'quote 'file) base))" "(if(path? base)"
" base"
"(list(if(symbol? base) 'quote 'file) base)))"
" orig-l))" " orig-l))"
"(loop(cdr a)(cdr l))))" "(loop(cdr a)(cdr l))))"
"(else(loop(cons(car l) a)(cdr l))))))" "(else(loop(cons(car l) a)(cdr l))))))"
@ -850,16 +852,20 @@
"(pair?(cadr s))(eq?(caadr s) 'quote))" "(pair?(cadr s))(eq?(caadr s) 'quote))"
"(make-resolved-module-path(flatten-sub-path(cadadr s)(cddr s))))" "(make-resolved-module-path(flatten-sub-path(cadadr s)(cddr s))))"
"((and(pair? s)(eq?(car s) 'submod)" "((and(pair? s)(eq?(car s) 'submod)"
" (equal? (cadr s) \".\")" " (or (equal? (cadr s) \".\")"
" (equal? (cadr s) \"..\"))"
"(and relto" "(and relto"
"(let((p(resolved-module-path-name relto)))" "(let((p(resolved-module-path-name relto)))"
"(or(symbol? p)" "(or(symbol? p)"
"(and(pair? p)(symbol?(car p)))))))" "(and(pair? p)(symbol?(car p)))))))"
"(define rp(resolved-module-path-name relto))" "(define rp(resolved-module-path-name relto))"
"(make-resolved-module-path(flatten-sub-path(if(pair? rp)(car rp) rp)" "(make-resolved-module-path(flatten-sub-path(if(pair? rp)(car rp) rp)"
" (let ((r (if (equal? (cadr s) \"..\")"
"(cdr s)"
"(cddr s))))"
"(if(pair? rp)" "(if(pair? rp)"
"(append(cdr rp)(cddr s))" "(append(cdr rp) r)"
"(cddr s)))))" " r)))))"
"((and(pair? s)(eq?(car s) 'planet))" "((and(pair? s)(eq?(car s) 'planet))"
"(unless planet-resolver" "(unless planet-resolver"
"(with-continuation-mark" "(with-continuation-mark"
@ -910,7 +916,8 @@
" p))))" " p))))"
"(s(if(and(pair? s)(eq? 'submod(car s)))" "(s(if(and(pair? s)(eq? 'submod(car s)))"
"(let((v(cadr s)))" "(let((v(cadr s)))"
" (if (equal? v \".\")" " (if (or (equal? v \".\")"
" (equal? v \"..\"))"
"(if relto" "(if relto"
"(let((p(resolved-module-path-name relto)))" "(let((p(resolved-module-path-name relto)))"
"(if(pair? p)" "(if(pair? p)"
@ -922,13 +929,20 @@
" v))" " v))"
" s))" " s))"
"(subm-path(if(and(pair? s)(eq? 'submod(car s)))" "(subm-path(if(and(pair? s)(eq? 'submod(car s)))"
" (let ((p (if (and (equal? (cadr s) \".\")" " (let ((p (if (and (or (equal? (cadr s) \".\")"
" (equal? (cadr s) \"..\"))"
" relto)" " relto)"
"(let((p(resolved-module-path-name relto)))" "(let((p(resolved-module-path-name relto))"
" (r (if (equal? (cadr s) \"..\")"
"(cdr s)"
"(cddr s))))"
"(if(pair? p)" "(if(pair? p)"
"(flatten-sub-path(car p)(append(cdr p)(cddr s)))" "(flatten-sub-path(car p)(append(cdr p) r))"
"(flatten-sub-path p(cddr s))))" "(flatten-sub-path p r)))"
" (flatten-sub-path \".\" (cddr s)))))" " (flatten-sub-path \".\" "
" (if (equal? (cadr s) \"..\")"
"(cdr s)"
"(cddr s))))))"
"(if(pair? p)" "(if(pair? p)"
"(cdr p)" "(cdr p)"
" #f))" " #f))"

View File

@ -967,7 +967,9 @@
(list* 'submod (list* 'submod
(if (equal? base ".") (if (equal? base ".")
base base
(list (if (symbol? base) 'quote 'file) base)) (if (path? base)
base
(list (if (symbol? base) 'quote 'file) base)))
orig-l)) orig-l))
(loop (cdr a) (cdr l)))] (loop (cdr a) (cdr l)))]
[else (loop (cons (car l) a) (cdr l))]))) [else (loop (cons (car l) a) (cdr l))])))
@ -978,16 +980,20 @@
(pair? (cadr s)) (eq? (caadr s) 'quote)) (pair? (cadr s)) (eq? (caadr s) 'quote))
(make-resolved-module-path (flatten-sub-path (cadadr s) (cddr s)))] (make-resolved-module-path (flatten-sub-path (cadadr s) (cddr s)))]
[(and (pair? s) (eq? (car s) 'submod) [(and (pair? s) (eq? (car s) 'submod)
(equal? (cadr s) ".") (or (equal? (cadr s) ".")
(equal? (cadr s) ".."))
(and relto (and relto
(let ([p (resolved-module-path-name relto)]) (let ([p (resolved-module-path-name relto)])
(or (symbol? p) (or (symbol? p)
(and (pair? p) (symbol? (car p))))))) (and (pair? p) (symbol? (car p)))))))
(define rp (resolved-module-path-name relto)) (define rp (resolved-module-path-name relto))
(make-resolved-module-path (flatten-sub-path (if (pair? rp) (car rp) rp) (make-resolved-module-path (flatten-sub-path (if (pair? rp) (car rp) rp)
(if (pair? rp) (let ([r (if (equal? (cadr s) "..")
(append (cdr rp) (cddr s)) (cdr s)
(cddr s))))] (cddr s))])
(if (pair? rp)
(append (cdr rp) r)
r))))]
[(and (pair? s) (eq? (car s) 'planet)) [(and (pair? s) (eq? (car s) 'planet))
(unless planet-resolver (unless planet-resolver
(with-continuation-mark (with-continuation-mark
@ -1038,7 +1044,8 @@
p)))] p)))]
[s (if (and (pair? s) (eq? 'submod (car s))) [s (if (and (pair? s) (eq? 'submod (car s)))
(let ([v (cadr s)]) (let ([v (cadr s)])
(if (equal? v ".") (if (or (equal? v ".")
(equal? v ".."))
(if relto (if relto
;; must have a path inside, or we wouldn't get here ;; must have a path inside, or we wouldn't get here
(let ([p (resolved-module-path-name relto)]) (let ([p (resolved-module-path-name relto)])
@ -1051,13 +1058,20 @@
v)) v))
s)] s)]
[subm-path (if (and (pair? s) (eq? 'submod (car s))) [subm-path (if (and (pair? s) (eq? 'submod (car s)))
(let ([p (if (and (equal? (cadr s) ".") (let ([p (if (and (or (equal? (cadr s) ".")
(equal? (cadr s) ".."))
relto) relto)
(let ([p (resolved-module-path-name relto)]) (let ([p (resolved-module-path-name relto)]
[r (if (equal? (cadr s) "..")
(cdr s)
(cddr s))])
(if (pair? p) (if (pair? p)
(flatten-sub-path (car p) (append (cdr p) (cddr s))) (flatten-sub-path (car p) (append (cdr p) r))
(flatten-sub-path p (cddr s)))) (flatten-sub-path p r)))
(flatten-sub-path "." (cddr s)))]) (flatten-sub-path "."
(if (equal? (cadr s) "..")
(cdr s)
(cddr s))))])
;; flattening may erase the submodule path: ;; flattening may erase the submodule path:
(if (pair? p) (if (pair? p)
(cdr p) (cdr p)