Re: [CEDET-devel] Intellisense setup and problems, again
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2008-01-13 20:15:32
|
Hi, Thanks for this great example. It took me a while to figure out what was going on. There were two cascading problems that this exposed. The first was a qualified method in a namespace that wasn't handled right in the scope manager. The second was that the type cache saw the constructor in the list of entries in "name2" before the class, which wasn't useful since the constructor wasn't a type. By forcing a type at that stage, it could then look further in and find pMumble. I checked in my changes to semantic-scope, and semanticdb-typecache, and your example now works. If you don't mind, I'm going to add your sample into my test directory as one of my baseline tests. Your other question about "using senator" is what happens if smart completion gets nothing. When that happens, it goes to a backup system which often works, but isn't very smart, and provides unrelated options. Thanks Eric >>> Hannu Koivisto <az...@ik...> seems to think that: >Hannu Koivisto <az...@ik...> writes: > >> I'll try to come up with more test cases for the other problems. > >Here's one: > >Test.hpp >--8<------------------------------------------------------------ >namespace Name1 { >namespace Name2 { > >class Foo >{ > typedef unsigned int Mumble; >public: > Foo(); > int get(); > >private: > void publishStuff(int a, int b); > > void sendStuff(int a, int b); > > Mumble* pMumble; >}; > >} // namespace Name2 >} // namespace Name1 >--8<------------------------------------------------------------ > >Test.cpp >--8<------------------------------------------------------------ >#include "Test.hpp" > >namespace Name1 { >namespace Name2 { > >Foo::Foo() >{ > <cursor here> >} > >int Foo::get() >{ > return 0; >} > >void Foo::publishStuff(int /* a */, int /* b */) >{ >} > >void Foo::sendStuff(int /* a */, int /* b */) >{ >} > >} // namespace Name2 >} // namespace Name1 >--8<------------------------------------------------------------ > >An attempt to say p<M-x semantic-ia-complete-symbol-menu RET> >displays publishStuff() as the only completion, pMumble is not >included even though it should be. > >In my actual code the behaviour is more complex: if I say (the >corresponding of) pM<M-x semantic-ia-complete-symbol-menu RET> it >does display pMumble as a completion (and other symbols beginning >with pM). One visible difference that I see between using p and pM >prefixes is that with plain p Semantic doesn't say anything, just >displays publishStuff() as the only completion, but with pM as the >prefix it says "No smart completions found. Trying Senator." I >haven't been able make a test case with this behaviour yet. > -- Eric Ludlam: er...@si... Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net |