Author |
Topic |
|
Frunobulax
Ketchup Master
84 Posts |
Posted - Jul 09 2009 : 10:32:18 AM
|
Hi,
I had a go at 1727 for a few hours and will go back to 1724. In my environment (C++/VS2005, large projects, lots of templates and namespaces) the autocompletion features are virtually unusable. Seems 1727 has major problems to identify the return value types of member functions if the types are boost::shared_ptr<something>, possibly in combination with namespaces.
More precisely, if we have
class _foo { ... };
typedef boost::shared_ptr<_foo> foo;
class _bar {
foo myMember();
};
typedef boost::shared_ptr<_bar> bar;
bar myObject;
Now typing
myObject->myMember()->
will not suggest the members of _foo.
We've seen similar problems ever since we use VAX (almost 2 years), but the more recent versions managed to get it right most of the time...
tv
|
"The nice part about being a pessimist is that you are constantly being either proven right or pleasantly surprised." (George F. Will)
|
Edited by - Frunobulax on Jul 09 2009 10:33:00 AM |
|
accord
Whole Tomato Software
United Kingdom
3287 Posts |
Posted - Jul 09 2009 : 5:11:05 PM
|
I extended and tried your example:
class _foo { int Apple; };
typedef boost::shared_ptr<_foo> foo;
class _bar {
foo myMember();
};
typedef boost::shared_ptr<_bar> bar;
bar myObject;
void func()
{
myObject->myMember()->Apple;
}
So far, I wasn't able to reproduce the problem using this example. Apple in func() was always suggested for me. Can you please try this little source in a new test project to see if it works there or not?
Isn't it possible that you have turned off
VA Options -> Advanced -> Listboxes -> Get content from default intellisense
accidentally? (It is only a wild guess, but may be worth asking ) I'm anxious to find out why is this happening. |
Edited by - accord on Jul 09 2009 5:19:44 PM |
|
|
Frunobulax
Ketchup Master
84 Posts |
Posted - Jul 10 2009 : 04:58:18 AM
|
VA Options -> Advanced -> Listboxes -> Get content from default intellisense
is turned off, but not accidentally. Intellisense is useless for us: It will usually work for at least 30 seconds after every header change (blocking the IDE to some degree) and then mix up all symbols. Therefore I have completely turned off Intellisense by renaming the feacp.dll file, and I rely on VAX (plus my memory) only.
As I said, it happens in large source trees (one application using headers from roughly 80 libraries, plus standard libraries and boost) in conjunction with heavy use of templates/boost. The solution currently includes the project and 8 libraries.
I have tried to reproduce such problems with VAX in the past, but couldn't pinpoint the problem in test projects.
There seem to be a lot of problems with identically named classes and/or files in conjunction with namespaces. Two of the libraries in my solution have files "util.cpp" and "util.h", defining classes in different namespaces. Create implementation will sometimes place the implementation in the wrong util.cpp file, and suggestions tend to be off when these classes are involved.
tv
|
"The nice part about being a pessimist is that you are constantly being either proven right or pleasantly surprised." (George F. Will)
|
|
|
accord
Whole Tomato Software
United Kingdom
3287 Posts |
Posted - Jul 12 2009 : 7:11:45 PM
|
quote: We've seen similar problems ever since we use VAX (almost 2 years), but the more recent versions managed to get it right most of the time...
So is it possible that the improvement was caused by turning on intellisense and the setback was caused by turning off intellisense suggestions?
Identically named classes: if Visual Assist finds two classes with the same name (in the same namespace), it offer suggestions from both.
What happens if you press alt+o in util.h or util.cpp? Can you please post the paths of both util.cpp and both util.h so I can investigate the create implementation problem? |
Edited by - accord on Jul 12 2009 7:12:28 PM |
|
|
Frunobulax
Ketchup Master
84 Posts |
Posted - Jul 13 2009 : 04:48:17 AM
|
quote:
So is it possible that the improvement was caused by turning on intellisense and the setback was caused by turning off intellisense suggestions?
No, I haven't used intellisense for more than two years. It seems that 1727 has trouble with code where 1724 works.
quote:
Identically named classes: if Visual Assist finds two classes with the same name (in the same namespace), it offer suggestions from both.
First, we have no identically named classes in one namespace, just identically named classes in different namespaces (or one class in a namespace and one class in the global namespace).
Second, there are no suggestions from the other identically named class(es) in other namespaces (this was a problem with VAX that was fixed last year IIRC), but this time VAX will suggest complete nonsense (standard windows functions/variables defined in the global namespace).
Third, the problem occurs when I type a member function, where the exact type of class is known. So assume myclass::myfunction has return value foo::bar, then typing "myfunction()->" for an instance of myclass will give no usable suggestions.
quote:
What happens if you press alt+o in util.h or util.cpp?
Sorry, I have spent significant time in the past to track VAX bugs. This time I simply went back to 1724, and I'm not going to install 1727 again.
quote:
Can you please post the paths of both util.cpp and both util.h so I can investigate the create implementation problem?
The pair where the implementation was placed (in util.cpp) was (root)\\lib_fzd\\comp\\inc\\util.h (root)\\lib_fzd\\comp\\src\\util.cpp Classes there are in the global namespace.
The other pair where the function was declared was (root)\\lib_gbp\\gpgraflib\\inc\\util.h (root)\\lib_gbp\\gpgraflib\\src\\util.cpp All classes there are in a namespace.
tv
|
"The nice part about being a pessimist is that you are constantly being either proven right or pleasantly surprised." (George F. Will)
|
|
|
accord
Whole Tomato Software
United Kingdom
3287 Posts |
Posted - Jul 17 2009 : 3:46:04 PM
|
I was able to create a situation where Create Implementation goes wrong:
case=29745
I understand that you have no more time. Please let us know if we may be of further assistance. |
|
|
support
Whole Tomato Software
5566 Posts |
Posted - Aug 22 2009 : 7:26:12 PM
|
The scope of case=29745 is limited to the Open Corresponding File (Alt+O) issue, which is fixed in build 1731
|
Whole Tomato Software, Inc. |
|
|
|
Topic |
|