Bug 426911 - [Refactoring] Extracting function to a declared global variable shouldn't be allowed
Summary: [Refactoring] Extracting function to a declared global variable shouldn't be ...
Status: NEW
Alias: None
Product: CDT
Classification: Tools
Component: cdt-refactoring (show other bugs)
Version: Next   Edit
Hardware: PC Mac OS X
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-29 11:07 EST by Gustavo Wagner CLA
Modified: 2020-09-04 15:24 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gustavo Wagner CLA 2014-01-29 11:07:29 EST
Eclipse IDE for C/C++ Developers
Version: Kepler Service Release 1
Build id: 20130919-0819


Reproducing the bug:


Consider the following code:
======== Original Version ========
#define Id_0

int GlobalVar_0 = 1;

int func_0() {
    int LocalVar_0 = 0; // To extract
    return GlobalVar_0;
}

int Function_0(int LocalVar_0) {
    return GlobalVar_0;
}
==================================

Now, let's the extract a function named "GlobalVar_0"
Applying the refactoring:
========== Refactored ============
#define Id_0

int GlobalVar_0 = 1;

int GlobalVar_0() {
    return 0;
}
int func_0() {
    int LocalVar_0 = GlobalVar_0();
    return GlobalVar_0;
}

int Function_0(int LocalVar_0) {
    return GlobalVar_0;
}
=================================

The tool shouldn't allow to apply invalid transformations like this. Notice that now the program has a compilation error. It would be good if it was possible to prevent incorrect extractions by checking if at least there's no name collisions.

Thanks in advance.
Comment 1 Gustavo Wagner CLA 2014-01-29 11:49:35 EST
Correcting:
* Now, let's extract a function named "GlobalVar_0"