Furthur improve error reporting for libraries.
authorChris Hanson <org/chris-hanson/cph>
Mon, 21 Oct 2019 05:37:00 +0000 (22:37 -0700)
committerChris Hanson <org/chris-hanson/cph>
Mon, 21 Oct 2019 05:37:00 +0000 (22:37 -0700)
src/runtime/library-database.scm

index 23919a9ab601ca84a3696f88fad95b09ac446c24..2c71c93d3e67224fcc8c9b0c8586418fd3dcb72c 100644 (file)
@@ -118,7 +118,10 @@ USA.
              (if (not auto)
                  (error "Unknown property:" key))
              (if (not (auto-runnable? auto this))
-                 (error "Auto property not ready:" key))
+                 (error "Auto property not ready:"
+                        key
+                        (error-irritant/noise " because of")
+                        (auto-unready-deps auto this)))
              (let ((bindings (run-auto auto this)))
                (set-cdr! alist (append bindings (cdr alist)))
                (cdr (assq key bindings)))))))
@@ -213,6 +216,18 @@ USA.
                         (library 'get key))
                       (auto-deps auto))))))
 
+(define (auto-unready-deps auto library)
+  (if (every (lambda (key)
+              (library 'has? key))
+            (auto-deps auto))
+      (list "guard expr")
+      (map (lambda (key)
+            (let ((auto* (automatic-property key)))
+              (if auto*
+                  (cons key (auto-unready-deps auto* library))
+                  key)))
+          (auto-deps auto))))
+
 (define (run-auto auto library)
   (let ((runner
         (lambda ()