<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">Actually, a quick aside:  <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-operation</code> is an unpleasing name, since most of our other operation subclasses are named <em>foo</em>-<code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">op</code>.</p>

<p dir="auto">Is there some way to make <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-op</code> a new name, while keeping <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-operation</code> as a (deprecated) alias for the class?  Ideally permitting users' method dispatch and <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">make-instance</code> usage to continue to function?</p>

<p dir="auto">In the best of all worlds, I would like to make that name change, and then export <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-op</code> (and <em>only</em> <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-op</code>).</p>

<p dir="auto">On 4 Aug 2020, at 16:35, Robert Goldman wrote:</p>

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
<p dir="auto">On 4 Aug 2020, at 16:18, Ilya Perminov wrote:</p>

<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999">
<p dir="auto">The around method will look something like this</p>
</blockquote>

<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">(defmethod input-files :around ((o asdf/bundle::gather-operation) (c system))
  (unless (eq (asdf/bundle::bundle-type o) :no-output-file)
    (append (call-next-method)
            (remove-if-not
                (asdf/bundle::pathname-type-equal-function
                     (asdf/bundle::bundle-pathname-type (asdf/bundle::gather-type o)))
                           (mappend (lambda (c) (output-files 'process-op c))
                                    (asdf/component:sub-components c  :type 'wrapper-file))))))
</code></pre>

<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999">
<p dir="auto">To my taste it knows too much about ASDF guts, but maybe it is not too bad.</p>
</blockquote>

<p dir="auto">I'm looking at the code now, and</p>

<ul>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">bundle-type</code> is exported from <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf/bundle</code> (but not <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf</code>) (it could use a docstring if you can propose one)</p></li>
<li><p dir="auto">So is <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">bundle-pathname-type</code></p></li>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">pathname-type-equal-function</code> is not exported, but it's a trivial combination of <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">pathname-type</code> and <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">equalp</code></p></li>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-type</code> is the only "really internal" function. (A block comment would be nice here, too.)</p></li>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-operation</code> is <em>not</em> exported, but I think that's probably wrong on our part: I don't believe there should be hidden operations.  If I get around to it, I will probably export it from the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf</code> (really <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf/interface</code>) package, unless someone has a good argument for it continuing to be internal.</p></li>
</ul>

<p dir="auto">So I don't think that is a lot of ASDF internals, especially not for customizing the ASDF protocol.</p>
</blockquote>
</div>
</div>
</body>
</html>