From d0b0f94dd017931bc567ee291e2951b29bf25de4 Mon Sep 17 00:00:00 2001 From: Thomas Phillips Date: Wed, 8 Nov 2023 19:16:20 +1300 Subject: [PATCH] Return modified value instead of relying on in-place modification --- tools/reccmp/reccmp.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tools/reccmp/reccmp.py b/tools/reccmp/reccmp.py index 05f1ec26..565fddef 100755 --- a/tools/reccmp/reccmp.py +++ b/tools/reccmp/reccmp.py @@ -364,10 +364,8 @@ def get_registers(line: str): to_replace.append((reg, match.start())) return to_replace -def replace_register(lines: list[str], start_line: int, reg: str, replacement: str): - # TODO: Use map and return lines rather than modifying parameter - for i in range(start_line, len(lines)): - lines[i] = lines[i].replace(reg, replacement) +def replace_register(lines: list[str], start_line: int, reg: str, replacement: str) -> list[str]: + return [line.replace(reg, replacement) if i >= start_line else line for i, line in enumerate(lines)] # Is it possible to make new_asm the same as original_asm by swapping registers? 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: # Do a three-way swap replacing in all the subsequent lines temp_reg = '&' * len(reg) - # TODO: This happens to work but it really shouldn't - replace_register(new_asm, i, replacing_reg, temp_reg) - replace_register(new_asm, i, reg, replacing_reg) - replace_register(new_asm, i, temp_reg, reg) + new_asm = replace_register(new_asm, i, replacing_reg, temp_reg) + new_asm = replace_register(new_asm, i, reg, replacing_reg) + new_asm = replace_register(new_asm, i, temp_reg, reg) else: # No replacement to do, different code, bail out return False