"""Волна N+40: vfbuild70 — 31 EF в op.java (5 методов, 9 групп лямбд). Запуск: python3 tools/waves_n40.py""" import os, re, sys ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) p = os.path.join(ROOT, "src/main/java/defpackage/op.java") L = open(p, encoding="utf-8", errors="replace").read().splitlines() ok = True def edit(ln, name): """rename all whole-word `name` occurrences on line ln to name+'f'""" global ok i = ln - 1 new = re.sub(rf"\b{name}\b", name + "f", L[i]) if new != L[i]: L[i] = new elif name + "f" not in L[i]: ok = False print(f"MISS {ln}: no {name} in {L[i].strip()[:90]!r}") def insert_before(ln, anchor_prev, anchor_next, decl): global ok ip = ln - 1 prev_ok = anchor_prev in L[ip - 1] next_ok = anchor_next in L[ip] done = decl in "\n".join(L[max(0, ip - 8) : ip + 8]) if prev_ok and next_ok and not done: line = L[ip] indent = line[: len(line) - len(line.lstrip())] L[ip:ip] = [indent + decl] elif done: pass else: ok = False print( f"INSERT-MISS {ln}: prev={L[ip - 1].strip()[:70]!r} next={L[ip].strip()[:70]!r}" ) # edits first (descending line numbers) for ln in (1452, 1451, 1450, 1441, 1440, 1439, 1428, 1427, 1426): edit(ln, "var5") for ln in (1336, 1335, 1334): edit(ln, "var4") for ln in (1306, 1304, 1302, 1293, 1292, 1291): edit(ln, "var5") for ln in (1205, 1204, 1203): edit(ln, "var4") for ln in (1166, 1165, 1164, 1153, 1152, 1151): edit(ln, "var4") # inserts (descending): one copy per method/case group insert_before( 1418, "var7 = var6.toLowerCase(Locale.ROOT);", "var0.add(", "final aso var5f = var5;", ) insert_before(1326, "var4 = var1[var3];", "var0.add(", "final od var4f = var4;") insert_before( 1283, "var7 = var6.toLowerCase(Locale.ROOT);", "var0.add(", "final oe var5f = var5;" ) insert_before( 1195, "var5 = titleCase(((ob)var4).name());", "var0.add(", "final ob var4f = var4;" ) insert_before( 1143, "var6 = var5.toLowerCase(Locale.ROOT);", "var0.add(", "final nz var4f = var4;" ) open(p, "w", encoding="utf-8").write("\n".join(L) + "\n") print("OK" if ok else "PROBLEMS") sys.exit(0 if ok else 1)