Thank you all for your answers. Hi Guille , Nice solution! It worked perfectly for Code Completition! Yet the obsolete symbols (class names and selectors) keep showing in Spotlight, but i guess this is too implementation specific. I will step through its execution to try to find out how it works. Best, Laura On Mon, Feb 2, 2015 at 8:39 AM, Guillermo Polito <guillermopolito@gmail.com> wrote:
Well yes, but GCs are happening all the time :). So the problem is that someone is keeping a strong reference on the symbol.
I tried the following:
- create a method named #unusedUnexpectedMessage: That came up in the auto completion, ok - remove it: Still in auto completion - force GC a looot: still in auto completion
After chasing strong references I could clean up my image by doing:
ChangeSet cleanUp: true. RecentMessageList cleanUp. 10 timesRepeat: [Smalltalk garbageCollect]
First obvious thing: changesets and friends (lets also think about nautilus history that may do that) could keep strong references on symbols.
Then the question is if that is correct or not... To me the problem is that the auto completion mechanism is pretty primitive and depends on all existing symbols instead of <the subset of symbols that could be messages>.
Guille
El Mon Feb 02 2015 at 12:05:49 PM, Sven Van Caekenberghe <sven@stfx.eu> escribió:
But weak refs are only killed after GC, right ?
And even then...
On 02 Feb 2015, at 12:03, Guillermo Polito <guillermopolito@gmail.com> wrote:
It's the table that keeps the symbols and checks their uniqueness.
but AFAIK the symbol table is weak. So probably it's the completion mechanism that is keeping extra references... El Mon Feb 02 2015 at 11:52:28 AM, phil@highoctane.be < phil@highoctane.be> escribió: Got the same problem here.
Annoying when third parties have to do something in the environment as they are shown things that do not exist.
Where to look? What's the symbol intern table?
Phil
On Mon, Feb 2, 2015 at 11:44 AM, stepharo <stepharo@free.fr> wrote: Probably by resetting the Symbol intern table. but no time to dive into it now. Hi all,
Code completition tools show class/method old names i've changed and no longer use. How can i remove all unused (occurring nowhere in source code) or unimplemented names?
Best, Laura