[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SHADOWING-IMPORT doesn't



SHADOWING-IMPORT does not work correctly when there is a conflicting
symbol in the importing package:

     KCl (Kyoto Common Lisp)  June 3, 1987

     >(in-package "A")
     #<"A" package>
 
     A>(defun f () "A")			;F in A
     F
 
     A>(in-package "B")
     #<"B" package>

     B>(defun f () "B") 		;conflicting F in B
     F

     B>(shadowing-import 'a::f)		;should work without error

     Error: Cannot shadowing-import the symbol A::F
            to #<"B" package>,
            because there is already a symbol with the same name
            in the package.
     Error signalled by SHADOWING-IMPORT.

According to Steele, p. 179:

     SHADOW and SHADOWING-IMPORT never signal a name-conflict error
     [...]  SHADOWING-IMPORT does name-conflict checking to the extent
     that it checks whether a distince existing symbol with the same
     name is accessable; if so, it is shadowed by the new symbol, which
     implies that it must be uninterned if it was directly present in
     the package.

What should happen in the example above is that B::F should be uninterned
and the import should succeed.
 
Jeff Dalton,                      JANET: J.Dalton@uk.ac.ed             
AI Applications Institute,        ARPA:  J.Dalton%uk.ac.ed@nss.cs.ucl.ac.uk
Edinburgh University.             UUCP:  ...!ukc!ed.ac.uk!J.Dalton