From 8e5993f99f291e426c76a7e2448d9feb487e7450 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 23 Jun 2009 12:07:54 +0000 Subject: [PATCH] fix serialization problems svn: r15241 --- collects/scheme/private/serialize.ss | 16 ++++++++++++++-- collects/syntax/private/modcollapse-noctc.ss | 5 ++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/collects/scheme/private/serialize.ss b/collects/scheme/private/serialize.ss index 5b2ceac9c6..bd67fe8879 100644 --- a/collects/scheme/private/serialize.ss +++ b/collects/scheme/private/serialize.ss @@ -70,6 +70,18 @@ (define deserialize-module-guard (make-parameter (lambda (mod-path sym) (void)))) (define varref (#%variable-reference varref)) + + (define (collapse/resolve-module-path-index mpi rel-to) + (let ([v (collapse-module-path-index mpi rel-to)]) + (if (path? v) + ;; If collapsing gives a path, then we can't do any better than + ;; resolving --- and we must resolved, because the mpi may record + ;; a more accurate path inside. + (let ([v2 (resolved-module-path-name (module-path-index-resolve mpi))]) + (if (symbol? v2) + `(quote ,v2) + v2)) + v))) (define (mod-to-id info mod-map cache) (let ([deserialize-id (serialize-info-deserialize-id info)]) @@ -86,7 +98,7 @@ (if (symbol? (caddr b)) (caddr b) (protect-path - (collapse-module-path-index + (collapse/resolve-module-path-index (caddr b) (build-path (serialize-info-dir info) "here.ss"))))) @@ -98,7 +110,7 @@ (if (symbol? (cdr deserialize-id)) (cdr deserialize-id) (protect-path - (collapse-module-path-index + (collapse/resolve-module-path-index (cdr deserialize-id) (build-path (serialize-info-dir info) "here.ss")))) diff --git a/collects/syntax/private/modcollapse-noctc.ss b/collects/syntax/private/modcollapse-noctc.ss index e9f9d3aed7..35b2ddd7e7 100644 --- a/collects/syntax/private/modcollapse-noctc.ss +++ b/collects/syntax/private/modcollapse-noctc.ss @@ -138,8 +138,11 @@ Use syntax/modcollapse instead. (cdddr relto-mp)) (list (cadr relto-mp))))))]) (normalize-planet `(planet ,pathstr ,(caddr relto-mp)))))] + [(eq? (car relto-mp) 'quote) + (set! relto-mp (build-path (current-directory) "x")) + (combine-relative-elements elements)] [else (error 'combine-relative-elements - "don't know how to deal with: ~s" relto-mp)])) + "don't know how to deal with: ~s for ~s" relto-mp elements)])) (define (normalize-lib s) (if (null? (cddr s))