Help: Errors when symbol export list changes in defpackage
Posted: Sun Jul 03, 2011 6:54 pm
I'm using SBCL (1.0.29, though upgrading soon), with quicklisp and asdf(2), on Mac OS X 10.5.8
with Emacs and SLIME.
I have been developing a project with several packages, including a library of code that
I'm using throughout. Everything works fine until I change the list of symbols
that are exported by the package (e.g., I remove a function and take its name out
of the :export list in the defpackage in the file package.lisp, which has all the
defpackage's for the library).
At that point the code will not successfully recompile. I get warnings
of the following form for each such package and each such symbol.
Although there are no errors listed, only warnings, the system calls this
a fatal problem and refuses to compile. Even stranger:
when I put those (now fake) symbols back in the export list (even without defining
such functions), everything compiles fine!
I recompile with
I tried deleting the .fasl files for the package but this didn't do the trick.
I don't know where else the information on the old symbol would be stored.
I even reloaded the package file, to no avail.
I'd very much appreciate any help on this. I'm sure I'm missing something simple,
but it's quite frustrating. Thanks!
with Emacs and SLIME.
I have been developing a project with several packages, including a library of code that
I'm using throughout. Everything works fine until I change the list of symbols
that are exported by the package (e.g., I remove a function and take its name out
of the :export list in the defpackage in the file package.lisp, which has all the
defpackage's for the library).
At that point the code will not successfully recompile. I get warnings
of the following form for each such package and each such symbol.
Code: Select all
; caught WARNING:
; <package-name> also exports the following symbols:
; (<package-name>:<previously-defined-function-name>)
; See also:
; The ANSI Standard, Macro DEFPACKAGE
a fatal problem and refuses to compile. Even stranger:
when I put those (now fake) symbols back in the export list (even without defining
such functions), everything compiles fine!
I recompile with
Code: Select all
(asdf:operate 'asdf:load-op <system> :force t)
I don't know where else the information on the old symbol would be stored.
I even reloaded the package file, to no avail.
I'd very much appreciate any help on this. I'm sure I'm missing something simple,
but it's quite frustrating. Thanks!