~ chicken-core (chicken-5) d63741b79bbeac34971e0ef0600e51e93453b11c
commit d63741b79bbeac34971e0ef0600e51e93453b11c
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Thu Nov 19 15:58:37 2015 +0100
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Fri Jan 1 17:08:32 2016 +1300
Error out when emitting import libraries for nonexistant modules
This fixes #1188.
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/NEWS b/NEWS
index f5d0e256..c68f99a8 100644
--- a/NEWS
+++ b/NEWS
@@ -51,6 +51,8 @@
declared types exactly. Specializations are matched from first to
last to resolve ambiguities (#1214).
- Compiler rewrites for char{<,>,<=,>=,=}? are now safe (#1122).
+ - When requesting to emit import libraries that don't exist, the
+ compiler now gives an error instead of quietly continuing (#1188).
- Core libraries
- Irregex has been updated to 0.9.4, which fixes severe performance
diff --git a/batch-driver.scm b/batch-driver.scm
index 514022d6..7cf47cbb 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -587,6 +587,13 @@
'() )
'((##core#undefined))) ) )
+ (unless (null? import-libraries)
+ (quit "No module definition found for import libraries to emit: ~A"
+ ;; ~S would be confusing: separate with a comma
+ (string-intersperse
+ (map (lambda (il) (->string (car il)))
+ import-libraries) ", ")))
+
(when (pair? compiler-syntax-statistics)
(with-debugging-output
'S
diff --git a/core.scm b/core.scm
index fb70c6f2..f9707b36 100644
--- a/core.scm
+++ b/core.scm
@@ -967,6 +967,10 @@
(lambda (il)
(when enable-module-registration
(emit-import-lib name il))
+ ;; Remove from list
+ ;; to avoid error
+ (set! import-libraries
+ (delete il import-libraries))
(values
(reverse xs)
'((##core#undefined)))))
Trap