Author |
Topic |
|
noone
New Member
2 Posts |
Posted - Jan 25 2006 : 06:28:56 AM
|
Hi,
I am evaluating software and first thing I tested was feature I miss in VS: "Goto implementation"
"Goto implementation" does not work when cpp file has using statement.
Our namespace hierarchy is complex (and long). (This is simple test to reproduce behaviour) //namespace.h #pragma once using namespace System;
namespace VisualAssist1 { namespace Test1 { public __gc class Class1; } } // VisualAssist1.h #include "namespace.h"
public __gc class VisualAssist1::Test1::Class1 { public: int f1(int i); }; //VisualAssist1.cpp #include "stdafx.h" #include "VisualAssist1.h"
using VisualAssist1::Test1::Class1;
int Class1::f1(int i) { return 0; }
If I position cursor in header file "f1" function and pres Alt+G, or select menu VAssistX->Goto Implementation, nothing happens. It works from .cpp file to .h file.
If I change .cpp file and remove using "VisualAssist1::Test1::Class1;" and add namespace name in front of method, "Goto implementation works" (modified) //VisualAssist1.cpp #include "stdafx.h" #include "VisualAssist1.h"
int VisualAssist1::Test1::Class1::f1(int i) { return 0; }
Goto implementation does not work in Visual studio too.
Workaround is to remove using statement but it gives long names for functions. If I break line into two parts I get it working but I have to change all our source files. //If using removed it works int VisualAssist1::Test1:://split line Class1::f1(int i) { return 0; }
I uses latest version of demo software (downloaded today) and Visual Studio 2003
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jan 25 2006 : 5:34:20 PM
|
i am seeing the same thing. thank you for the clear example. to help me picture the extent of the problem is this only happening when you want to swap between a header and a cpp file? or are other alt-g movements also failing? e.g. to look up a function that you are calling?
are you aware of alt-o to swap between a header and a cpp file? you can also use alt-m once in a file to get a drop down list of the functions in that file. type once this list is shown to filter it down to just the item you want.
i have been able to produce the same bug with an even simpler example, which should help.
case=971 |
zen is the art of being at one with the two'ness |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
|
noone
New Member
2 Posts |
Posted - Jan 26 2006 : 02:44:10 AM
|
>look up a function that you are calling?
This also does not work. VAssist::Test1::Class1* c1 = new VAssist::Test1::Class1(); int i = 0; c1->f1(i, &i);
If I move cursor between "f" and "1" (c1->f1), and press Alt+G it jumps to declaration (.h file). If I select menu command VAssistX->Goto Implementation, nothing happens. It works from .cpp file to .h but not vice versa. Workarround is to use VS (right click function and select: Go To Definition, Go To Declaration. Both works)
Alt+O is very useful feature I discovered at begining. I did not know about Alt-M. It is very handy.
|
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jan 26 2006 : 4:40:03 PM
|
a combination of alt-g to get you to the header, and then alt-o and alt-m to find the function is not an ideal work around, but it is worth considering if you find the IDE's goto overly slow, or it ever fails. |
zen is the art of being at one with the two'ness |
|
|
sean
Whole Tomato Software
USA
2817 Posts |
Posted - Dec 19 2006 : 9:27:08 PM
|
case=971 is fixed in build 1543 |
|
|
|
Topic |
|