On Thu, Mar 18, 2010 at 12:25 AM, Juan Jose Garcia-Ripoll < juanjose.garciaripoll@googlemail.com> wrote:
On Thu, Mar 18, 2010 at 12:21 AM, Juan Jose Garcia-Ripoll < juanjose.garciaripoll@googlemail.com> 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