~ chicken-core (chicken-5) a6c091dc5f7f467d8072c1fc665600fbc1159381
commit a6c091dc5f7f467d8072c1fc665600fbc1159381 Author: Peter Bex <peter@more-magic.net> AuthorDate: Thu Oct 10 07:47:24 2019 +0200 Commit: megane <meganeka@gmail.com> CommitDate: Thu Oct 10 10:41:29 2019 +0300 Check if there _is_ a value or syntax binding before warning and declaring it undefined This unbreaks the build of CHICKEN itself, which "abuses" the possibility of having both a procedure and a define-inline version of the same procedure in tweaks.scm. a) Check the list of unexportable stuff _after_ checking if there's a regular or syntax identifier defined for that export inside the module. b) Add types to the list of things checked that cannot be exported. Signed-off-by: megane <meganeka@gmail.com> diff --git a/core.scm b/core.scm index b3177501..b05a68b6 100644 --- a/core.scm +++ b/core.scm @@ -1043,7 +1043,8 @@ (lambda (id) (and (not (assq id foreign-variables)) (not (hash-table-ref inline-table id)) - (not (hash-table-ref constant-table id)))))) + (not (hash-table-ref constant-table id)) + (not (##sys#get id '##compiler#type-abbreviation)))))) (let ((il (or (assq name import-libraries) all-import-libraries))) (when il (emit-import-lib name il) diff --git a/modules.scm b/modules.scm index e9abd786..1501ab04 100644 --- a/modules.scm +++ b/modules.scm @@ -470,11 +470,6 @@ (let* ((h (car xl)) (id (if (symbol? h) h (car h)))) (cond ((assq id sexports) (loop (cdr xl))) - ((not (check-export id)) - (set! missing #t) - (##sys#warn "exported identifier does not refer to value or syntax binding" - id) - (loop (cdr xl))) (else (cons (cons @@ -488,12 +483,14 @@ (cdr a)) ((not def) (set! missing #t) - (##sys#warn - (string-append - "exported identifier of module `" + (##sys#warn + (string-append + "exported identifier of module `" (symbol->string name) - "' has not been defined") - id) + (if (check-export id) + "' has not been defined" + "' does not refer to value or syntax binding")) + id) #f) (else (module-rename id name))))))) (loop (cdr xl))))))))))Trap