[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