Inline
CLion provides the following inline refactorings:
Inline Constant. This refactoring is opposite to the Extract constant refactoring.
Inline Define. This refactoring is opposite to the Extract define refactoring.
Inline Typedef. This refactoring is opposite to the Extract typedef refactoring.
Inline Parameter. This refactoring is opposite to the Extract parameter refactoring.
Inline Function. This refactoring is opposite to the Extract function refactoring.
Examples
Before | After |
---|---|
//This function will be inlined
int fdiff(int x, int y, int factor);
int main(){
int x = 10;
int y = 9;
int z = fdiff(x, y, 2);
return 0;
}
int fdiff(int x, int y, int factor) {
return (x-y) * factor;
}
|
int main(){
int x = 10;
int y = 9;
int z = (x - y) * 2;
return 0;
}
|
Before | After |
---|---|
int main (int argc, const char * argv[]) {
@autoreleasepool {
float result;
//The third parameter will be inlined
result = mulfunc(10, 20, 2);
}
return 0;
}
float mulfunc(int x, int y, int factor) {
return x * y * factor;
}
|
int main (int argc, const char * argv[]) {
@autoreleasepool {
float result;
result = mulfunc(10, 20);
}
return 0;
}
float mulfunc(int x, int y) {
return x * y * 2;
}
|
Before | After |
---|---|
import math
class Solver:
def demo(self):
a = 3
b = 25
c = 46
#This variable will be inlined
return_type_of_sqrt = math.sqrt(b ** 2 - 4 * a * c)
root1 = (-b + return_type_of_sqrt) / (2*a)
root2 = (-b - return_type_of_sqrt) / (2*a)
print(root1,root2)
Solver().demo()
|
import math
class Solver:
def demo(self):
a = 3
b = 25
c = 46
root1 = (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)
root2 = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
print(root1,root2)
Solver().demo()
|
Before | After |
---|---|
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
//This variable will be inlined
var clen = document.cookie.length;
var i = 0;
while (i != clen) {
var j = i + clen;
...
}
}
|
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var i = 0;
while (i != document.cookie.length) {
var j = i + document.cookie.length;
...
}
}
|
Perform inline refactoring
Place the caret at the desired symbol to be inlined.
Do one of the following:
From the main menu or from the context menu, select
.Press Ctrl+Alt+N.
In the Inline dialog that corresponds to the selected symbol, confirm the inline refactoring or view the selected symbol usages in Find Refactoring Preview.