using ENSURE-PARSED-BASE-TYPE instead of PARSE-TYPE fixes it:
(defun convert-from-foreign (value type) (translate-from-foreign value (ensure-parsed-base-type type)))
(define-compiler-macro convert-from-foreign (value type) (if (constantp type) (expand-from-foreign value (ensure-parsed-base-type (eval type))) `(translate-from-foreign ,value (parse-type ,type))))
but also breaks some other tests.
using ENSURE- PARSED- BASE-TYPE instead of PARSE-TYPE fixes it:
(defun convert- from-foreign (value type) from-foreign value (ensure- parsed- base-type type)))
(translate-
(define- compiler- macro convert- from-foreign (value type) expand- from-foreign value (ensure- parsed- base-type (eval type))) (translate- from-foreign ,value (parse-type ,type))))
(if (constantp type)
(
`
but also breaks some other tests.