124 lines
4.3 KiB
Python
124 lines
4.3 KiB
Python
"""Волна N+35: vfbuild52 — 36 EF в aph.java (3 метода, 4 лямбды).
|
|
Запуск: python3 tools/waves_n35.py"""
|
|
|
|
import os, sys
|
|
|
|
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
JAVA = os.path.join(ROOT, "src/main/java")
|
|
p = os.path.join(JAVA, "defpackage/aph.java")
|
|
L = open(p, encoding="utf-8", errors="replace").read().splitlines()
|
|
ok = True
|
|
|
|
|
|
def edit(ln, old, new):
|
|
global ok
|
|
i = ln - 1
|
|
if i < len(L) and old in L[i]:
|
|
L[i] = L[i].replace(old, new, 1)
|
|
elif i < len(L) and new in L[i]:
|
|
pass
|
|
else:
|
|
ok = False
|
|
print(f"MISS {ln}: {old!r} got {(L[i] if i < len(L) else '<oob>').strip()!r}")
|
|
|
|
|
|
def insert_before(ln, anchor_prev, anchor_next, lines):
|
|
global ok
|
|
ip = ln - 1
|
|
prev_ok = anchor_prev in L[ip - 1]
|
|
next_ok = anchor_next in L[ip]
|
|
done = lines[0].strip() in "\n".join(L[max(0, ip - 8) : ip + 8])
|
|
if prev_ok and next_ok and not done:
|
|
L[ip:ip] = lines
|
|
elif done:
|
|
pass
|
|
else:
|
|
ok = False
|
|
print(
|
|
f"INSERT-MISS {ln}: prev={L[ip - 1].strip()[:50]!r} next={L[ip].strip()[:50]!r}"
|
|
)
|
|
|
|
|
|
# --- line edits (descending) ---
|
|
# region3: truncateAfterSubstring lambda (f-suffix)
|
|
edit(392, "var8[0] = (boolean)", "var8f[0] = (boolean)")
|
|
edit(388, "var5.setLength(", "var5f.setLength(")
|
|
edit(
|
|
387,
|
|
"var4.append(Component.literal(var5.toString()).setStyle(var6[0]));",
|
|
"var4f.append(Component.literal(var5f.toString()).setStyle(var6f[0]));",
|
|
)
|
|
edit(383, "var6[0] = var7x;", "var6f[0] = var7x;")
|
|
edit(376, "var7.toString()", "var7f.toString()")
|
|
edit(367, "var6[0]", "var6f[0]")
|
|
edit(366, "var7.append(var9x);", "var7f.append(var9x);")
|
|
edit(359, "var5.length() > 0", "var5f.length() > 0")
|
|
edit(356, "var5.append(var9x);", "var5f.append(var9x);")
|
|
# region2: replaceLastChar lambdaA (var3f) + lambdaB (f-suffix)
|
|
edit(247, "var3[0] = var3[0]", "var3f[0] = var3f[0]")
|
|
edit(227, "if (var7[0] != null)", "if (var7f[0] != null)")
|
|
edit(215, "var7[0] = var7x;", "var7f[0] = var7x;")
|
|
edit(214, "flushRun(var5, var6, var7[0]);", "flushRun(var5f, var6f, var7f[0]);")
|
|
edit(199, "if (var8[0] == var4)", "if (var8f[0] == var4f)")
|
|
edit(191, "if (!var7[0].equals(var7x))", "if (!var7f[0].equals(var7x))")
|
|
edit(187, "var8[0] = var8[0]", "var8f[0] = var8f[0]")
|
|
edit(186, "var6.appendCodePoint(var8x);", "var6f.appendCodePoint(var8x);")
|
|
# region1: truncateAfterSecondSpace lambda (f-suffix)
|
|
edit(109, "if (!var4.isEmpty())", "if (!var4f.isEmpty())")
|
|
edit(106, "var7[0] = (boolean)", "var7f[0] = (boolean)")
|
|
edit(98, "var4.appendCodePoint(var7x);", "var4f.appendCodePoint(var7x);")
|
|
edit(90, "if (var6[0]", "if (var6f[0]")
|
|
edit(85, "var5[0] = var6x;", "var5f[0] = var6x;")
|
|
edit(78, "var6[0] = var6[0]", "var6f[0] = var6f[0]")
|
|
edit(71, "var5[0]", "var5f[0]")
|
|
edit(67, "var4.setLength(", "var4f.setLength(")
|
|
edit(
|
|
66,
|
|
"var3.append(Component.literal(var4.toString()).setStyle(var5[0]));",
|
|
"var3f.append(Component.literal(var4f.toString()).setStyle(var5f[0]));",
|
|
)
|
|
|
|
# --- inserts (descending by line) ---
|
|
insert_before(
|
|
348,
|
|
"var8 = var15;",
|
|
"var3.accept(",
|
|
[
|
|
" final MutableComponent var4f = var4;",
|
|
" final StringBuilder var5f = var5;",
|
|
" final Style[] var6f = var6;",
|
|
" final StringBuilder var7f = var7;",
|
|
" final boolean[] var8f = var8;",
|
|
],
|
|
)
|
|
insert_before(
|
|
245, "var3 = var10000;", "var2.accept(", [" final int[] var3f = var3;"]
|
|
)
|
|
insert_before(
|
|
177,
|
|
"var8 = var16;",
|
|
"var2.accept(",
|
|
[
|
|
" final int var4f = var4;",
|
|
" final MutableComponent var5f = var5;",
|
|
" final StringBuilder var6f = var6;",
|
|
" final Style[] var7f = var7;",
|
|
" final int[] var8f = var8;",
|
|
],
|
|
)
|
|
insert_before(
|
|
59,
|
|
"var7 = var15;",
|
|
"var2.accept(",
|
|
[
|
|
" final MutableComponent var3f = var3;",
|
|
" final StringBuilder var4f = var4;",
|
|
" final Style[] var5f = var5;",
|
|
" final int[] var6f = var6;",
|
|
" final boolean[] var7f = var7;",
|
|
],
|
|
)
|
|
|
|
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
|
|
print("OK" if ok else "PROBLEMS")
|
|
sys.exit(0 if ok else 1)
|