Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Visual Assist
 Technical Support
 Extract Method modifies wrong .h file

You must be registered to post a reply.
Click here to register.

Screensize:
UserName:
Password:
Format: BoldItalicizeUnderlineStrikethrough Align leftCenterAlign right Insert horizontal ruleUpload and insert imageInsert hyperlinkInsert email addressInsert codeInsert quoted textInsert listInsert Emoji
   
Message:

Forum code is on.
Html is off.

 
Check to subscribe to this topic.
   

T O P I C    R E V I E W
dewtell Posted - Feb 14 2020 : 7:23:39 PM
I have a Microsoft Project & directory with 2 .h files and one .cpp file: FindShiftRegBits.h, StubFindShiftRegBits.h, and FindShiftRegBits.cpp. FindShiftRegBits.h has the real definition of a class that is implemented in the .cpp file; StubFindShiftRegBits.h has a very stripped-down non-functional definition of the same class that is used for including in unit tests that need to link to the class and refer to a few of its public methods without needing it to work.

I've tried to Extract Method on some code in the FindShiftRegBits.cpp file. However, it extracts the method to the StubFindShiftRegBits.h file instead of the real .h file, and produces a popup: "Move implementation to Source File failed to identify a suitable target source file. Would you like to run Create File?" There is no corresponding .cpp file for the StubFindShiftRegBits.h file, and there shouldn't be, because we don't want to have to link from this project when building the unit tests. Is it possible to force Extract Method to modify the .h file that has the same root name as the .cpp file the code is being extracted from?

Dave Wallace

VAX Info:
License: Standard (******) Support ends 2022.07.17
VA_X.dll file version 10.9.2358.0 built 2019.12.19
DevEnv.exe version 12.0.40629.0 Professional
msenv.dll version 12.0.40629.0
Comctl32.dll version 6.10.18362.657
Windows 8.1 6.3 Build 9600
12 processors (x86-64, WOW64)
Language info: 1252, 0x409

Platform: Project defined
Stable Includes:
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt;
C:\Program Files (x86)\Windows Kits\8.1\Include\shared;
C:\Program Files (x86)\Windows Kits\8.1\Include\um;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;

Other Includes:

Stable Source Directories:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\src;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\atl;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfcm;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc;


*removed license email, no need to make it public*
2   L A T E S T    R E P L I E S    (Newest First)
dewtell Posted - Feb 18 2020 : 3:17:20 PM
The file is manually generated to meet the needs of the unit tests that include it, so it is easy to add your prefix. Thanks!

Dave W.
feline Posted - Feb 15 2020 : 09:31:39 AM
This is an interesting problem. Is editing the stub header file an option? Or is it being automatically generated from the main .h file in some manor?

Since VA is parsing all files in your solution, by design, it is seeing two different versions of the same class, at the same time, in the same namespace. This is going to effect more than just Extract Method. The easiest solution is to "hide" one of the two classes from VA's parser, without effecting anything else.

Adding this to the top of the stub file will get VA to ignore everything that follows it, but since it is also removed by the pre-processor, it won't effect how your code compiles:

// this code hides the rest of the file from VA's parser
// so only one instance of the class is found and worked with
#if 1 == 0
_asm {
#endif

© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000