Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 1727: Major setback?
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

Frunobulax
Ketchup Master

84 Posts

Posted - Jul 09 2009 :  10:32:18 AM  Show Profile  Reply with Quote
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  Show Profile  Reply with Quote
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
Go to Top of Page

Frunobulax
Ketchup Master

84 Posts

Posted - Jul 10 2009 :  04:58:18 AM  Show Profile  Reply with Quote
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)
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Jul 12 2009 :  7:11:45 PM  Show Profile  Reply with Quote
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
Go to Top of Page

Frunobulax
Ketchup Master

84 Posts

Posted - Jul 13 2009 :  04:48:17 AM  Show Profile  Reply with Quote
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)
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Jul 17 2009 :  3:46:04 PM  Show Profile  Reply with Quote
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.
Go to Top of Page

support
Whole Tomato Software

5566 Posts

Posted - Aug 22 2009 :  7:26:12 PM  Show Profile  Reply with Quote
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.
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000