Inline method refactoring changes variables names after applying the transformation
researcher175 opened this issue · comments
Researcher commented
Inline method refactoring changes field signatures and generates uninitialized variables
Steps to reproduce the behavior:
- Code before refactoring:
def _calculate_tk(source):
def RL(a, b):
for c in range(0, len(b) - 2, 3):
xa = a & ((1 << 32) - 1)
d = ord(b[c + 2]) - 87 if b[c + 2] >= 'a' else int(b[c + 2])
d = xa >> d if b[c + 1] == '+' else xa << d
a = a + d & 4294967295 if b[c] == '+' else a ^ d
return (a & ((1 << (32 - 1)) - 1)) - (a & (1 << (32 - 1)))
b = 406398
d = source.encode('utf-8')
a = b
for di in d:
a = RL(a + di, "+-a^+6")
a = RL(a, "+-3^+b+-f")
return '{0:d}.{1:d}'.format(a, a ^ b)
-
Apply the Inline Method refactoring to '_calculate_tk.RL'
-
Expected code after refactoring:
def _calculate_tk(source):
b = 406398
d = source.encode('utf-8')
a = b
for di in d:
for c in range(0, len("+-a^+6") - 2, 3):
xa = a + di & ((1 << 32) - 1)
d = ord("+-a^+6"[c + 2]) - 87 if "+-a^+6"[c + 2] >= 'a' else int("+-a^+6"[c + 2])
d = xa >> d if "+-a^+6"[c + 1] == '+' else xa << d
a = a + di + d & 4294967295 if "+-a^+6"[c] == '+' else a + di ^ d
a = (a + di & ((1 << (32 - 1)) - 1)) - (a + di & (1 << (32 - 1)))
for c in range(0, len("+-3^+b+-f") - 2, 3):
xa = a & ((1 << 32) - 1)
d = ord("+-3^+b+-f"[c + 2]) - 87 if "+-3^+b+-f"[c + 2] >= 'a' else int("+-3^+b+-f"[c + 2])
d = xa >> d if "+-3^+b+-f"[c + 1] == '+' else xa << d
a = a + d & 4294967295 if "+-3^+b+-f"[c] == '+' else a ^ d
a = (a & ((1 << (32 - 1)) - 1)) - (a & (1 << (32 - 1)))
return '{0:d}.{1:d}'.format(a, a ^ b)
- The result of the program after applied transformation:
def _calculate_tk(source):
b = 406398
d = source.encode('utf-8')
a = b
for di in d:
for __0__c in range(0, len("+-a^+6") - 2, 3):
__0__xa = __0__a + di & ((1 << 32) - 1)
__0__d = ord("+-a^+6"[__0__c + 2]) - 87 if "+-a^+6"[__0__c + 2] >= 'a' else int("+-a^+6"[__0__c + 2])
__0__d = __0__xa >> __0__d if "+-a^+6"[__0__c + 1] == '+' else __0__xa << __0__d
__0__a = __0__a + di + __0__d & 4294967295 if "+-a^+6"[__0__c] == '+' else __0__a + di ^ __0__d
a = (__0__a + di & ((1 << (32 - 1)) - 1)) - (__0__a + di & (1 << (32 - 1)))
for __1__c in range(0, len("+-3^+b+-f") - 2, 3):
__1__xa = __1__a & ((1 << 32) - 1)
__1__d = ord("+-3^+b+-f"[__1__c + 2]) - 87 if "+-3^+b+-f"[__1__c + 2] >= 'a' else int("+-3^+b+-f"[__1__c + 2])
__1__d = __1__xa >> __1__d if "+-3^+b+-f"[__1__c + 1] == '+' else __1__xa << __1__d
__1__a = __1__a + __1__d & 4294967295 if "+-3^+b+-f"[__1__c] == '+' else __1__a ^ __1__d
a = (__1__a & ((1 << (32 - 1)) - 1)) - (__1__a & (1 << (32 - 1)))
return '{0:d}.{1:d}'.format(a, a ^ b)