I corrected it to your advice accordingly.
(defmethod output-files ((operation compile-op) (component foo-file)) (multiple-value-bind (pathnames translatep) (call-next-method) (values (mapcar #'(lambda (p) (make-pathname* :directory (append (pathname-directory p) (list (cond ((featurep :foo1.0) "1.0") ((featurep :foo1.1) "1.1") (t (error "No foo feature found."))))) :defaults p)) pathnames) translatep)))
On Sat, 2013-11-16 at 17:34 -0500, Faré wrote:
On Sat, Nov 16, 2013 at 5:21 PM, FAU fau@riseup.net wrote:
(defmethod output-files ((operation compile-op) (component
foo-file))
(let ((l (multiple-value-list (call-next-method)))) (apply #'values (mapcar #'(lambda (p) (make-pathname* :directory (append
(pathname-directory p) (list #
+foo1.0 "1.0" #+foo1.1 "1.1")) :defaults p)) (car l)) (cdr l))))
Inasmuch as I think that runtime conditionals should be used rather
than
compile-time conditionals wherever performance permits (see also
featurep),
your general scheme is valid. However, you can should be using (multiple-value-bind (pathnames translatedp) ... (values ...)) There are only two values returned in this protocol.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
When my contradictors' ideas aren't an incoherent mess I can easily
disprove,
I call them for the ideologists they are; but they are so dogmatic, they don't change their mind after I insult them.