Return modified value instead of relying on in-place modification

This commit is contained in:
Thomas Phillips 2023-11-08 19:16:20 +13:00
parent 43c12d804d
commit d0b0f94dd0

View File

@ -364,10 +364,8 @@ def get_registers(line: str):
to_replace.append((reg, match.start())) to_replace.append((reg, match.start()))
return to_replace return to_replace
def replace_register(lines: list[str], start_line: int, reg: str, replacement: str): def replace_register(lines: list[str], start_line: int, reg: str, replacement: str) -> list[str]:
# TODO: Use map and return lines rather than modifying parameter return [line.replace(reg, replacement) if i >= start_line else line for i, line in enumerate(lines)]
for i in range(start_line, len(lines)):
lines[i] = lines[i].replace(reg, replacement)
# Is it possible to make new_asm the same as original_asm by swapping registers? # Is it possible to make new_asm the same as original_asm by swapping registers?
def can_resolve_register_differences(original_asm, new_asm): def can_resolve_register_differences(original_asm, new_asm):
@ -395,10 +393,9 @@ def can_resolve_register_differences(original_asm, new_asm):
if replacing_reg != reg: if replacing_reg != reg:
# Do a three-way swap replacing in all the subsequent lines # Do a three-way swap replacing in all the subsequent lines
temp_reg = '&' * len(reg) temp_reg = '&' * len(reg)
# TODO: This happens to work but it really shouldn't new_asm = replace_register(new_asm, i, replacing_reg, temp_reg)
replace_register(new_asm, i, replacing_reg, temp_reg) new_asm = replace_register(new_asm, i, reg, replacing_reg)
replace_register(new_asm, i, reg, replacing_reg) new_asm = replace_register(new_asm, i, temp_reg, reg)
replace_register(new_asm, i, temp_reg, reg)
else: else:
# No replacement to do, different code, bail out # No replacement to do, different code, bail out
return False return False