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
 1609: Rename/change signature regression
 New Topic  Reply to Topic
 Printer Friendly
Next Page
Author Previous Topic Topic Next Topic
Page: of 2

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Sep 29 2007 :  6:33:16 PM  Show Profile  Reply with Quote
Sometimes after rename a variable or use change signature, VAX gets confused, and start underline with red ~~~~ a several symbol. I have to close and re-open the current file to solve this problem. I cannot reproduce this error. Is it a known bug?

Edited by - accord on Sep 29 2007 7:05:14 PM

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 01 2007 :  4:46:40 PM  Show Profile  Reply with Quote
At a guess VA has simply not caught up with the changes yet. Next time you see this can you try:

VAssistX -> Tools -> Reparse Current File

and see if this helps?

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 03 2007 :  5:27:46 PM  Show Profile  Reply with Quote
Ok, I tried, and it helped!
Last time when this happened, I have NOT used refactoring...

In rare cases VAX forget to re-parse the file? When this happen, it is not enough to wait, but have to re-parse manually.
I think it is new to 1609. Last time when it happened, I have used the new inner build 1610.
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Oct 03 2007 :  6:35:16 PM  Show Profile  Reply with Quote
If this happens again, please try the following: page down, page up (without manual reparse). This will tell us whether it is a window validation problem vs a parse timing problem.
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 04 2007 :  11:02:24 AM  Show Profile  Reply with Quote
I know this trick and I am allways doing this first. But I will double check it, if this will happen again.
Go to Top of Page

brian_winfield
Senior Member

USA
33 Posts

Posted - Oct 04 2007 :  6:31:50 PM  Show Profile  Reply with Quote
FYI -- I'm also seeing this problem.

Brian S Winfield
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 05 2007 :  4:28:22 PM  Show Profile  Reply with Quote
Can you try the steps Sean gave and post your results please?

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 10 2007 :  11:14:26 AM  Show Profile  Reply with Quote
When VAX stops to work on a file, alt+g also does not works on a several symbol. So this is NOT a screen refresh problem.

Not only reparse current file, but pressing Alt+O twice also great for workaround. I think sometimes VAX forget to refresh (properly) the file.

I am using 1611.

Isn't it possible that it is related to the change that fixed find refernces after rename? (not all references was found, because VAX forgot to reparse all files that was modified by rename. Now it is allways working perfectly! )

Edited by - accord on Oct 10 2007 11:22:03 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 10 2007 :  2:32:31 PM  Show Profile  Reply with Quote
It could be related to that change, but I don't immediately see why. Are you seeing any other colouring problems?

Do you have bold local symbols turned on? If so does this still work correctly?

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 10 2007 :  3:54:44 PM  Show Profile  Reply with Quote
>Do you have bold local symbols turned on?
No

This problem is very rare. When happens there is no goto, no find references, no symbol declaration info, etc.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 11 2007 :  1:14:07 PM  Show Profile  Reply with Quote
That's not good. But it also seems to be a rather wide ranging problem.

Do you have:

VA Options -> Performance -> Parse all files when opening a project

turned on or off?

Do you tend to run more than one IDE at the same time?

When this happens do you think you have had the file open already since you loaded the IDE, or is this the first time you opened the file after loading the IDE?

It is almost as if VA is not able to get hold of the time to parse it. That would explain what you are seeing. If so this might be caused by something else, e.g. anti-virus getting in VA's way. Anti-virus programs causing odd problems happens very occasionally, so this is just possible.

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 11 2007 :  3:36:26 PM  Show Profile  Reply with Quote
>Do you have:

>VA Options -> Performance -> Parse all files when opening a project
On

>Do you tend to run more than one IDE at the same time?

No. One IDE (VS2003 and VS2005 is installed, but only running the VS2005 SP1)


>When this happens do you think you have had the file open already >since you loaded the IDE, or is this the first time you opened the >file after loading the IDE?
I think it is not depend on opening, but I am usually keep file opened.

>It is almost as if VA is not able to get hold of the time to parse it.
No. Every time I am not able to goto or use any type of feature I wait seconds, but VAX will never reparse the file.

Maybe a way to reproduce: Try using extract method (in cpp), and wait for a second (headers are small, so VAX will wait only 1 second before reparse). Try use "move implementation to source". It never working for me. After double alt+o it will work on the new method.

Edited by - accord on Oct 11 2007 3:38:55 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 12 2007 :  10:32:02 AM  Show Profile  Reply with Quote
Can you explain the steps in a little more detail?

You seem to be using Extract Method in the cpp file, but how are you jumping to the header file? Alt-o? Ctrl-Tab? Clicking on the tab name?
Is this the matching header file for the cpp file, or a different, unrelated header file?

Is there any connection between the function where you used Extract Method and the function where you are using Move Implementation to Source File?

Which file (the cpp or header) does VA no longer understand?

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 12 2007 :  11:31:51 AM  Show Profile  Reply with Quote
Sorry, forgot to mention: I am using C++, so when I trigger, it will create the new function in the header, so you will find yourself in the header automatically (which is not good, so I want to use move implementation to source immediately, almost always)

Is there any connection between the function where you used Extract Method and the function where you are using Move Implementation to >Source File?

Yes I want to use it on the newly created function.

Which file (the cpp or header) does VA no longer understand?
Cannot use move implementation to source on the newly created function, created by VAX into the header.

So it is easy: I want to use extract method in the cpp, and I want to place new function in the cpp also (I don't want to include everything into the header AND I do not want to create all my functions inline). So, to extract a method into the cpp requires 3 steps:
1. Extract method
2. Move implementation to source
3. Move to new function from the end of the file by VA Outline.

The problem is with the second step, because move implementation to source do not works usually until double Alt+O (faster then selecting reparse current file from the menu)

But don't you, or developers experience similar things?
For example sometimes when I use goto, and then later use IDE's Navigate Backward, a lot of symbol will be underlined. So occurs even without editing the file...

Edited by - accord on Oct 13 2007 10:19:28 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 15 2007 :  12:23:50 PM  Show Profile  Reply with Quote
I am able to reproduce this quite easily with VA 1611, but so far I cannot reproduce it with VA 1609.

case=9365

I have not noticed anything like this before, but I have not been using Extract Method, I have been working on other areas of VA.

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 17 2007 :  3:30:01 PM  Show Profile  Reply with Quote
I have uninstalled, and then installed VAX again, and now it is working perfectly!

I tried to install 1610 and 1611 after 1609, but it doesn't helped. I know the "clear symbol database" and "rebuild symbol database" trick, but does not helped at all. The parser failed about every 5 minutes, but now 1611 and 1612 also works perfectly, so it is not a regression!
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Oct 17 2007 :  4:47:41 PM  Show Profile  Reply with Quote
It most definitely was a regression! Your Extract Method example nailed it for us. If you are using 1611 or 1612, then the problem is present.
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Oct 17 2007 :  4:48:59 PM  Show Profile  Reply with Quote
oh - I just noted that your original report was about 1609. The regression that was identified by the Extract Method example was in 1610, 1611 and 1612.
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 17 2007 :  5:33:57 PM  Show Profile  Reply with Quote
Sean: first, I have noticed a problem that sometimes broke the parser:
quote:
Sometimes after rename a variable or use change signature, VAX gets confused, and start underline with red ~~~~ a several symbol. I have to close and re-open the current file to solve this problem. I cannot reproduce this error. Is it a known bug?


While I tried to figure out how can I reproduce it, the time has passed and I changed to 1610, and later to 1611, but still experienced my main problem:
quote:
When VAX stops to work on a file, alt+g also does not works on a several symbol. So this is NOT a screen refresh problem.

Not only reparse current file, but pressing Alt+O twice also great for workaround. I think sometimes VAX forget to refresh (properly) the file.

I am using 1611.


Later I found something (case=9365) and I hoped it is related to my bug. But after I reinstalled VAX my original problem has gone. (So case=9365 was unrelated to my original problem.)

Edited by - accord on Oct 17 2007 5:35:17 PM
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Oct 17 2007 :  5:41:27 PM  Show Profile  Reply with Quote
Clear now - when threads get this long my eyes tend to glaze over...
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 20 2007 :  5:10:48 PM  Show Profile  Reply with Quote
I have a good, and a bad news.

The bad news is that my reinstall solution was momentary. Also tried to uninstall 1612 and install 1609, but did not helped.

The good news is that I can now reproduce the problem in a clean new project. The steps are:

0. Install VAX 1609
1. Create a new win32 project with name q.
2. Switch into q.h by alt+o
3. type the following:
class someclass {
    void SomeFunction();
};

4. Use create implementation on SomeFunction.
5. Now we are in the q.cpp. Use change singature on SomeFunction: change it to
void someclass::SomeFunction(int kkk)

(so the difference is the new parameter "int kkk")
6. now VAX underlines someclass and SomeFunction.

quote:
Feline wrote:It is almost as if VA is not able to get hold of the time to parse it. That would explain what you are seeing.

You can wait a year, but file will not be reparsed.
quote:
Sean wrote:If this happens again, please try the following: page down, page up (without manual reparse). This will tell us whether it is a window validation problem vs a parse timing problem.

Won't help.

...and also goto will not work on someclass and SomeFunction.

Sometimes VAX forget to re-parse the header (or reparse it incorrectly)?
This was an example, case=9365 is an another. But there are other triggers also. Other results may takes place: sometimes (rare) change signature overwrite the incorrect block in the header. It means that it overwrites some other function's signature.

I hope these cases are the same, so fixing one of them will fix all others also.
...and also Hope that the steps will work for you...
(Now I go back to 1608. If I am right, the regression happened in 1609)

ps: I have 3 reasons why I am talking about header re-parse faliure:
1. if you put
int apple;

apple;

into
void someclass::SomeFunction(int kkk)
function and then you use goto over the second apple, VAX will go to apple's declaration.
2. Reparse won't help.
3. Reparsing the header will help.

Edited by - accord on Oct 20 2007 5:27:45 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 22 2007 :  1:18:29 PM  Show Profile  Reply with Quote
Very clear instructions, thank you for this

How easily can you reproduce this?
Are you changing any of the defaults when you create this project?
If you undo the changes, so you are back to the default project as created, close and reload the IDE, can you reproduce the problem? I actually did this here, to double check without making a new project, and still no unexpected underlining.

Using win2k, VS2005 SP1, VA 1609 I have followed the instructions quite carefully, but there is no unexpected underlining. I am still sitting in "q.cpp", having just run Change Signature, so I added:

banana = 2;

into the body of the function, to make sure underlining of mistyped symbols was turned on and working. "banana" is underlined, but the class name and function name are not underlined.

Alt-g on the function name takes me to the header file, and alt-g a second time takes me right back to the cpp file.

The only thing I can think that I did differently is adding a blank line after the class and the generated function implementation, or something in the new project wizard - I accepted all of the defaults here except for the directory, I placed the solution into:

C:\\src_2005\\

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 22 2007 :  3:32:20 PM  Show Profile  Reply with Quote
I am not happy.

Just to verify I am creating new "win32 project" and NOT "win32 Console application".

I keep checked "create directory for solution", so this is the default.
I am press finish in "win32 application wizard" without any "next".
I am restarting visual studio 2005 sp1 (running on winxp sp2, no other addins) before I do the steps.
Not using full rebuild of symbol database. So the database maybe already corrupted, before I do the steps

Now, I am using 1608 and this version is working fine. (stable AND cannot reproduce the problem with my steps) What is strange, the problems with 1609-1612 is exist in more the one project, so the problem is NOT with the project. I am using custom defines in VAX's stdafx.h.

Feline: can you try a lot of (10-30) change signature, rename, create implementation and create declaration in a larger project? (at least 200-300 files)
I can break the parser very easily in more then one computer so it have to "work" for you also.

I have deleted all my settings in document and settings before installed 1609, so I am using the very default settings. Ok, changed some coloring, turned off hovering refactoring icon and spell checking in comments, but that's all. I am using some custom color by color picker dialog. But I don't think it is related to my problem

Edited by - accord on Oct 22 2007 4:07:40 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 23 2007 :  4:58:21 PM  Show Profile  Reply with Quote
For what it's worth I am also unhappy about this. Can you try 1614 please and see if this helps:

http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=6848

This contains a fix for a bug where Extract Method upsets the parser, so there is reason to hope it will fix this problem.

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 24 2007 :  12:53:08 PM  Show Profile  Reply with Quote
The same with 1614...

Do same change signature in cpp, and the parser will break.

Currently I have stop the find references triggered by change signature, and experienced that the header was not parsed correctly again...
Maybe caused by stop, but I do not think so...

What is strange is, not every change signature is buggy, but I cannot find the pattern so far. Maybe some timing problem?

Update: VAX's completion listbox (after ->) also breaked for this header: only 2 frined class xy was offered... Ctrl+Space, manual reparse also do not helped. I have restarted the IDE (without symbol rebuild), and now the full list is back!

Edited by - accord on Oct 24 2007 1:32:37 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 24 2007 :  1:54:23 PM  Show Profile  Reply with Quote
*puzzled* *concerned*

I ran both VA 1613 and VA 1614 through a load of automated tests before they were posted. This is testing the release build, running the GUI, and the tests run a pile of refactoring tests, Change Signature included, and they did not show up any problems.

This suggests that Change Signature on its own is not enough to trigger the problem.

Once you find this breaks, if you undo the Change Signature, restart the IDE, and redo the same Change Signature do you still see the problem? Or does it now work correctly?

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Oct 24 2007 :  1:59:46 PM  Show Profile  Reply with Quote
Ok, will try

How many change signature do your automated test have? One, or more?
I have worked hours before the break, so maybe the parsed already was tried. Additional info: I am using a lot of "View.NavigateBackward" and "View.NavigateForward" during my work (IDE's feature, invoking by key)
Sometimes maybe I am switching while VAX reparsing the file.

Edited by - accord on Oct 24 2007 2:11:07 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Oct 24 2007 :  3:51:39 PM  Show Profile  Reply with Quote
about 15 Change Signature tests, plus between 15 and 90 tests for each of the other refactoring operations. Rename has the most, currently about 90 tests.

A lot more refactoring than in your "make a new project" test, but less than refactoring solid for several hours.

How many lines of code, approximately, do you have in these files? For "normal" size files I would expect VA's parsing of the file to be nearly instant, so you are quite unlikely to be navigating during the parse.

No one else has reported anything like this yet, but hardly anyone was using the builds between 1609 and 1614. We might start to get more reports of this now 1614 is posted.

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Nov 14 2007 :  10:00:48 AM  Show Profile  Reply with Quote
I have new informations for you.
First of all: I am now using 1616.

I tried your tip: after the parser problem I undid the changes, restarted the IDE, but after that the problem cannot be reproduced.

A more interesting thing: try to use change signature several times (5-10x) on the same function (in a cpp) to rename it's incoming parameter: sometimes VAX do not reparse the file, sometimes VAX reparse it about 6 to 10 times!!! It is normal?

(Try in the middle of a larger file (my file has 1239 lines) to see the "VAX reparsing file" in status bar.)

Maybe what I seen is normal, but maybe helps.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19015 Posts

Posted - Nov 14 2007 :  2:02:40 PM  Show Profile  Reply with Quote
I am not sure the status bar is 100% accurate way of watching for VA reparsing the file. I have two reasons for thinking this:
a) if the file is parsed very quickly it is easy to miss the status bar message
b) sometimes VA has to "fight" with the IDE over writing to the status bar

When VA does not seem to parse the file is VA applying the correct syntax highlighting to the new parameter name? If you have local symbols in bold turned in it is easy to see if VA knows about the new parameter or not.

Seeing the file parsed 6 to 10 times is a lot more confusing. Did the message appear and disappear from the status bar this many times, moving very quickly? Or was this over 30 seconds or longer?

I would only expect VA to parse the file once after a single Change Signature change.

zen is the art of being at one with the two'ness
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3287 Posts

Posted - Nov 14 2007 :  4:00:42 PM  Show Profile  Reply with Quote
The message appear and disappear from the status bar this many times, very quickly after several change signature on the same function, in the middle of a larger file.

What is strange that VAX parse 6 or more times the cpp, and then quickly the header, but only once...
Go to Top of Page
Page: of 2 Previous Topic Topic Next Topic  
Next Page
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000