(commainterval 3))
params
(let ((arg (next-arg)))
- (unless (integerp arg)
+ (unless (or base
+ (integerp arg))
(error 'format-error
:complaint "~s is not of type INTEGER."
:args (list arg)))
(multiple-value-bind (segments first-semi close remaining)
(parse-format-justification directives)
(setf args
- (if (format-directive-colonp close)
+ (if (format-directive-colonp close) ; logical block vs. justification
(multiple-value-bind (prefix per-line-p insides suffix)
(parse-format-logical-block segments colonp first-semi
close params string end)
:complaint "~D illegal directive~:P found inside justification block"
:args (list count)
:references (list '(:ansi-cl :section (22 3 5 2)))))
+ ;; ANSI does not explicitly say that an error should
+ ;; be signalled, but the @ modifier is not explicitly
+ ;; allowed for ~> either.
+ (when (format-directive-atsignp close)
+ (error 'format-error
+ :complaint "@ modifier not allowed in close ~
+ directive of justification ~
+ block (i.e. ~~<...~~@>."
+ :offset (1- (format-directive-end close))
+ :references (list '(:ansi-cl :section (22 3 6 2)))))
(interpret-format-justification stream orig-args args
segments colonp atsignp
first-semi params))))