(: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)))