Improve error reporting for library imports.
authorChris Hanson <org/chris-hanson/cph>
Sun, 20 Oct 2019 20:07:17 +0000 (13:07 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sun, 20 Oct 2019 20:07:17 +0000 (13:07 -0700)
src/runtime/library-database.scm
src/runtime/library-imports.scm
src/runtime/library-loader.scm
src/runtime/runtime.pkg

index 640d96df2d5e21cfe1c0f97f8f492c6e8c65a6fa..23919a9ab601ca84a3696f88fad95b09ac446c24 100644 (file)
@@ -36,7 +36,10 @@ USA.
       (hash-table-exists? table name))
 
     (define (get name)
-      (hash-table-ref table name))
+      (let ((library (hash-table-ref/default table name #f)))
+       (if (not library)
+           (error "No library of this name in database:" name this))
+       library))
 
     (define (put! library)
       (if (and (library 'has? 'db)
@@ -115,7 +118,7 @@ USA.
              (if (not auto)
                  (error "Unknown property:" key))
              (if (not (auto-runnable? auto this))
-                 (error "Auto property not ready:" auto))
+                 (error "Auto property not ready:" key))
              (let ((bindings (run-auto auto this)))
                (set-cdr! alist (append bindings (cdr alist)))
                (cdr (assq key bindings)))))))
index dac1647942cdde96a724594a7e7a8810f1cc0dbe..33da1e5888025cf2c8f8fcb22b15fd91c0199e33 100644 (file)
@@ -29,12 +29,15 @@ USA.
 
 (declare (usual-integrations))
 \f
-(define (parsed-import-expandable? import db)
-  (let ((name (parsed-import-library import)))
-    (and (registered-library? name db)
-        ((registered-library name db) 'has? 'exports))))
-
 (define (expand-parsed-imports imports db)
+  (let ((unusable
+        (remove (lambda (import)
+                  (let ((name (parsed-import-library import)))
+                    (and (registered-library? name db)
+                         ((registered-library name db) 'has? 'exports))))
+                imports)))
+    (if (pair? unusable)
+       (error "Unknown imports:" (map parsed-import-library unusable))))
   (reduce-right append!
                '()
                (map (lambda (import)
@@ -42,10 +45,7 @@ USA.
                     imports)))
 
 (define-automatic-property 'imports '(parsed-imports db)
-  (lambda (imports db)
-    (every (lambda (import)
-            (parsed-import-expandable? import db))
-          imports))
+  #f
   expand-parsed-imports)
 
 ;;; Returns a list of library-import elements.
index 6deda0267cd151fe8ff94211a6f83e89208e8198..7dd55fbef00bc22b99b7cb0b0c7b0d805cfc372c 100644 (file)
@@ -130,12 +130,6 @@ USA.
 (define (environment . import-sets)
   (let ((parsed (map parse-import-set import-sets))
        (db host-library-db))
-    (let ((unusable
-          (remove (lambda (import)
-                    (parsed-import-expandable? import db))
-                  parsed)))
-      (if (pair? unusable)
-         (error "Imports not usable:" unusable)))
     (let ((imports (expand-parsed-imports parsed db)))
       (let ((unavailable
             (remove (lambda (import)
index 0056b3ee42bf39c128243003df8726b13a475b95..e20ba5383058b64c0803253bed21521c0e3e274c 100644 (file)
@@ -6086,8 +6086,7 @@ USA.
   (files "library-imports")
   (parent (runtime library))
   (export (runtime library)
-         expand-parsed-imports
-         parsed-import-expandable?))
+         expand-parsed-imports))
 
 (define-package (runtime library scode)
   (files "library-scode")