]> gitweb.factorcode.org Git - factor.git/blobdiff - misc/fuel/fuel-eval.el
FUEL: refactoring to eliminate the eval-result variable
[factor.git] / misc / fuel / fuel-eval.el
index 76c6708101ce60b7619749cdc1c2334bdbfaa6ee..374c5a56f97ad506273751a89c3d9c3dd7f75828 100644 (file)
@@ -46,7 +46,6 @@
                    (:nrs 'fuel-eval-non-restartable)
                    (:in (or (factor-current-vocab) "fuel"))
                    (:usings `(:array ,@(factor-usings)))
-                   (:get 'fuel-eval-set-result)
                    (:end '\;)
                    (t `(:factor ,(symbol-name sexp))))))
         ((symbolp sexp) (symbol-name sexp))))
 (defsubst fuel-eval--retort-result (ret) (nth 1 ret))
 (defsubst fuel-eval--retort-output (ret) (nth 2 ret))
 
+(defun fuel-eval--retort-result-safe (ret)
+  "Retort result or throws an error if the retort error is set."
+  (let ((err (fuel-eval--retort-error ret)))
+    (when err (error "%s" err))
+    (fuel-eval--retort-result ret)))
+
 (defsubst fuel-eval--retort-p (ret)
   (and (listp ret) (= 3 (length ret))))
 
-(defsubst fuel-eval--make-parse-error-retort (str)
-  (fuel-eval--retort-make (cons 'fuel-parse-retort-error str) nil))
-
 (defun fuel-eval--parse-retort (ret)
   (fuel-log--info "RETORT: %S" ret)
-  (if (fuel-eval--retort-p ret) ret
-    (fuel-eval--make-parse-error-retort ret)))
+  (if (fuel-eval--retort-p ret)
+      ret
+    (list ret nil nil)))
 
 (defsubst fuel-eval--error-name (err) (car err))
 
         (assoc name err))))
 
 (defsubst fuel-eval--error-restarts (err)
-  (cdr (assoc :restarts (or (fuel-eval--error-name-p err 'condition)
-                            (fuel-eval--error-name-p err 'lexer-error)))))
+  (alist-get :restarts (or (fuel-eval--error-name-p err 'condition)
+                           (fuel-eval--error-name-p err 'lexer-error))))
 
 (defsubst fuel-eval--error-file (err)
   (nth 1 (fuel-eval--error-name-p err 'source-file-error)))