[armedbear-ticket] [armedbear] #282: Spurious macros redefinition warnings

armedbear armedbear-devel at common-lisp.net
Thu Dec 20 16:28:09 UTC 2012


#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

-- 
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/282>
armedbear <http://common-lisp.net/project/armedbear>
armedbear


More information about the armedbear-ticket mailing list