Skip to content

FORMAT-ERROR when using "~T" inside of "~<...~:;...~>"

While trying to bootstrap SBCL using ECL under aarch64-android, I encountered following FORMAT-ERROR:

[218/320] src/compiler/arm64/insts
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
;;;
;;; End of Pass 1.
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
;;;
;;; End of Pass 1.
Condition of type: FORMAT-ERROR
Error in format: Cannot mix ~W, ~_, ~<...~:>, ~I, or ~T with ~<...~:;...~>
  ~:[This~;~:*~A~] is not a ~
                       ~<~%~9T~:;~/sb-impl:print-type/:~>~% ~S
                                                           ^
while processing indirect format string:
  ~?
   ^

It seems an ECL bug, e.g. following is a simplified example:

(format t "~90<~8T~:;foo~;bar~>")`

Which runs both under SBCL and CLISP, but failed under ECL.

According to CLHS http://www.lispworks.com/documentation/HyperSpec/Body/22_ceb.htm , ~:T, but not ~T is disallowed inside of ~<...~>.

See also bug report for SBCL: https://bugs.launchpad.net/sbcl/+bug/1856377