On Thu, Mar 18, 2010 at 12:25 AM, Juan Jose Garcia-Ripoll <
[email protected]> wrote:

> On Thu, Mar 18, 2010 at 12:21 AM, Juan Jose Garcia-Ripoll <
> [email protected]> wrote:
>
>> Narrowing down the problem, TRAVERSE now adds the LIB-OP operation to all
>> components of a system. I added a method
>>
>> (defmethod perform ((operation lib-op) (c component))
>>   nil)
>>
>> but this method gets overriden by a more specific one which is provided by
>> asdf.lisp
>>
>> (defmethod perform ((operation operation) (c source-file))
>>   (sysdef-error
>>    "~@<required method PERFORM not implemented ~
>>     for operation ~A, component ~A~@:>"
>>    (class-of operation) (class-of c)))
>>
>> This method was the cause of all problems.
>>
>
> There is obviously something awry going on here because now I realize that
> this is not more specific, but less -- lib-op <= operation Anyway, I will
> leave this for tomorrow as I am obviously not fit for this anymore.
>

This time I leave for bed, but while looking at the screen I think I found
the problem: packages. The two symbols, PERFORM in one and in another file
are different. I think this has to do with the way symbols are interned /
uninterned during the compilation phase itself. A symptom is that loading
the sources *.lisp everything works just fine. Another one is that the
debugger prints the offending method as #:PERFORM

Juanjo

-- 
Instituto de FĂ­sica Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://tream.dreamhosters.com
_______________________________________________
asdf-devel mailing list
[email protected]
http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

Reply via email to