#282: Spurious macros redefinition warnings -----------------------+---------------------------------------------------- Reporter: sboukarev | Owner: ehuelsmann Type: defect | Status: new Priority: minor | Milestone: Component: compiler | Version: Keywords: | -----------------------+---------------------------------------------------- Compiling and loading a file with
{{{ (defmacro foo ()) }}}
{{{ CL-USER(1): (compile-file "foo") #P"/tmp/foo.abcl" NIL NIL CL-USER(2): (load *) STYLE-WARNING: redefining COMMON-LISP-USER::FOO in #P"/tmp/foo.lisp" (previously defined in #P"/tmp/foo.lisp") T }}}
But it's the same file, turns out, the old source is different because it has :host :unspecific.
The place where it does comparison http://trac.common- lisp.net/armedbear/browser/trunk/abcl/src/org/armedbear/lisp/fdefinition.lisp#L40
And where it sets *source* http://trac.common- lisp.net/armedbear/browser/trunk/abcl/src/org/armedbear/lisp/compile- file.lisp#L723
So, it does TRUENAME. truename sets :unspecific on non-windows platforms for pathname-host. http://trac.common- lisp.net/armedbear/browser/trunk/abcl/src/org/armedbear/lisp/Pathname.java#L2185
And the compiler saves the source patname as just (setq *source* #"path"), so :unspecific is lost when read: http://trac.common- lisp.net/armedbear/browser/trunk/abcl/src/org/armedbear/lisp/compile- file.lisp#L685