wave N: vfbuild14 fixes (83 errors: EF blanks, casts, generics, ctor access, imports)
This commit is contained in:
parent
dbb0fc0607
commit
ab59aff082
45 changed files with 872 additions and 65 deletions
400
tools/waves_n.py
Normal file
400
tools/waves_n.py
Normal file
|
|
@ -0,0 +1,400 @@
|
|||
"""Волна N поверх vfbuild14 (83 ошибки). Таблицы по file:line из vfbuild14.log.
|
||||
Запуск: python3 tools/waves_n.py
|
||||
"""
|
||||
|
||||
import os, sys, collections
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
JAVA = os.path.join(ROOT, "src/main/java")
|
||||
stats = collections.Counter()
|
||||
files = {}
|
||||
|
||||
|
||||
def get(rel):
|
||||
p = rel if os.path.isabs(rel) else os.path.join(JAVA, rel)
|
||||
if p not in files:
|
||||
files[p] = open(p, encoding="utf-8", errors="replace").read().splitlines()
|
||||
return files[p]
|
||||
|
||||
|
||||
def edit_line(rel, ln, old, new, tag):
|
||||
L = get(rel)
|
||||
i = ln - 1
|
||||
if i >= len(L):
|
||||
stats[tag + "_MISS"] += 1
|
||||
print(f"MISS {rel}:{ln} (oob {len(L)})")
|
||||
return
|
||||
if old in L[i]:
|
||||
L[i] = L[i].replace(old, new, 1)
|
||||
stats[tag] += 1
|
||||
elif new in L[i]:
|
||||
stats[tag + "_skip"] += 1
|
||||
else:
|
||||
stats[tag + "_MISS"] += 1
|
||||
print(f"MISS {rel}:{ln}: {old!r}\n got: {L[i].strip()!r}")
|
||||
|
||||
|
||||
def edit_all(rel, old, new, tag, expect=None):
|
||||
L = get(rel)
|
||||
c = 0
|
||||
for i, l in enumerate(L):
|
||||
if old in l:
|
||||
L[i] = l.replace(old, new)
|
||||
c += 1
|
||||
if expect is not None and c != expect:
|
||||
stats[tag + "_COUNT"] += 1
|
||||
print(f"COUNT {rel}: {old!r} matched {c}, expected {expect}")
|
||||
if c:
|
||||
stats[tag] += c
|
||||
else:
|
||||
if any(new in l for l in L):
|
||||
stats[tag + "_skip"] += 1
|
||||
else:
|
||||
stats[tag + "_MISS"] += 1
|
||||
print(f"MISS-ALL {rel}: {old!r}")
|
||||
|
||||
|
||||
def add_import(rel, imp, tag):
|
||||
L = get(rel)
|
||||
if imp in L:
|
||||
stats[tag + "_skip"] += 1
|
||||
return
|
||||
for i, l in enumerate(L):
|
||||
if l.startswith("import "):
|
||||
L.insert(i, imp)
|
||||
stats[tag] += 1
|
||||
return
|
||||
stats[tag + "_MISS"] += 1
|
||||
print(f"IMPORT-MISS {rel}: {imp}")
|
||||
|
||||
|
||||
# (rel, line, old, new)
|
||||
EDITS = [
|
||||
# --- gq: effectively-final (blank decls, single later assignment) ---
|
||||
("defpackage/gq.java", 37, "float var3 = 0.0F;", "float var3;"),
|
||||
("defpackage/gq.java", 38, "float var4 = 0.0F;", "float var4;"),
|
||||
("defpackage/gq.java", 39, "Int2ObjectMap var5 = null;", "Int2ObjectMap var5;"),
|
||||
("defpackage/gq.java", 40, "Int2ObjectMap var6 = null;", "Int2ObjectMap var6;"),
|
||||
# --- mm ---
|
||||
(
|
||||
"defpackage/mm.java",
|
||||
169,
|
||||
"this.activeFadingSounds.put(var1, var8);",
|
||||
"this.activeFadingSounds.put(var1, (ml)var8);",
|
||||
),
|
||||
# --- ach ---
|
||||
(
|
||||
"defpackage/ach.java",
|
||||
458,
|
||||
"var6 = Comparator.comparing(var0 ->",
|
||||
"var6 = Comparator.<mo>comparing(var0 ->",
|
||||
),
|
||||
# --- acz: бриджи через Object ---
|
||||
(
|
||||
"defpackage/acz.java",
|
||||
81,
|
||||
"var1 = (PerServerVersionScreen)var0;",
|
||||
"var1 = (b.k)(Object)var0;",
|
||||
),
|
||||
(
|
||||
"defpackage/acz.java",
|
||||
83,
|
||||
"return new acx(var1.prevScreen,",
|
||||
"return new acx(((PerServerVersionScreen)var0).prevScreen,",
|
||||
),
|
||||
(
|
||||
"defpackage/acz.java",
|
||||
105,
|
||||
"var1 = (ViaFabricPlusScreen)var0;",
|
||||
"var1 = (b.k)(Object)var0;",
|
||||
),
|
||||
(
|
||||
"defpackage/acz.java",
|
||||
106,
|
||||
"return new acx(((ViaFabricPlusScreen)var1).prevScreen);",
|
||||
"return new acx(((ViaFabricPlusScreen)var0).prevScreen);",
|
||||
),
|
||||
# --- adc ---
|
||||
(
|
||||
"defpackage/adc.java",
|
||||
448,
|
||||
"var0.setValue(var2[Math.floorMod(var3 + var1, var2.length)]);",
|
||||
"var0.setValue((T)var2[Math.floorMod(var3 + var1, var2.length)]);",
|
||||
),
|
||||
# --- ado / aeq: typed Stream ---
|
||||
(
|
||||
"defpackage/ado.java",
|
||||
163,
|
||||
"try (Stream var15 = Files.list(capesDir()))",
|
||||
"try (Stream<Path> var15 = Files.list(capesDir()))",
|
||||
),
|
||||
(
|
||||
"defpackage/aeq.java",
|
||||
817,
|
||||
"try (Stream var1 = Files.list(var0))",
|
||||
"try (Stream<Path> var1 = Files.list(var0))",
|
||||
),
|
||||
# --- aeo: usage casts ---
|
||||
("defpackage/aeo.java", 310, "var10.append(", "((MutableComponent)var10).append("),
|
||||
("defpackage/aeo.java", 328, "var10.append(", "((MutableComponent)var10).append("),
|
||||
("defpackage/aeo.java", 345, "var10.append(", "((MutableComponent)var10).append("),
|
||||
("defpackage/aeo.java", 382, "var10.append(", "((MutableComponent)var10).append("),
|
||||
# --- ahw ---
|
||||
(
|
||||
"defpackage/ahw.java",
|
||||
175,
|
||||
"? -1: var9.getOrDefault(var11.parent.name, (1226890724 | -1226890725) + (1226890724 & -1226890725));",
|
||||
"? -1: ((Integer)var9.getOrDefault(var11.parent.name, (1226890724 | -1226890725) + (1226890724 & -1226890725)));",
|
||||
),
|
||||
# --- aid ---
|
||||
(
|
||||
"defpackage/aid.java",
|
||||
636,
|
||||
"byte var33 = var18 ? 1 : 0;",
|
||||
"byte var33 = (byte)(var18 ? 1 : 0);",
|
||||
),
|
||||
# --- akx ---
|
||||
(
|
||||
"defpackage/akx.java",
|
||||
154,
|
||||
"var1.sort((var0x, var1x) -> Integer.compare(var1x.getIntValue(), var0x.getIntValue()));",
|
||||
"var1.sort((var0x, var1x) -> Integer.compare(((Entry)var1x).getIntValue(), ((Entry)var0x).getIntValue()));",
|
||||
),
|
||||
# --- akz ---
|
||||
(
|
||||
"defpackage/akz.java",
|
||||
160,
|
||||
"var1.sort(String::compareToIgnoreCase);",
|
||||
"((List<String>)var1).sort(String::compareToIgnoreCase);",
|
||||
),
|
||||
# --- ald ---
|
||||
(
|
||||
"defpackage/ald.java",
|
||||
128,
|
||||
"var7.toArray(new Direction[0]),",
|
||||
"(Direction[])var7.toArray(new Direction[0]),",
|
||||
),
|
||||
("defpackage/ald.java", 170, "var2.add(var5);", "var2.add((BakedQuad)var5);"),
|
||||
# --- alp / auw: логгер defpackage.id ---
|
||||
(
|
||||
"defpackage/alp.java",
|
||||
54,
|
||||
"id.warn(Cif.SECURITY,",
|
||||
"defpackage.id.warn(Cif.SECURITY,",
|
||||
),
|
||||
("defpackage/auw.java", 467, "id.error(", "defpackage.id.error("),
|
||||
# --- B -> byte[] ---
|
||||
("defpackage/anm.java", 38, "B var2 = null;", "byte[] var2 = null;"),
|
||||
("defpackage/ann.java", 36, "B var3 = null;", "byte[] var3 = null;"),
|
||||
("defpackage/ans.java", 470, "B var3 = null;", "byte[] var3 = null;"),
|
||||
# --- ans: typed list for sort ---
|
||||
(
|
||||
"defpackage/ans.java",
|
||||
154,
|
||||
"ArrayList var4 = null;",
|
||||
"ArrayList<anr> var4 = null;",
|
||||
),
|
||||
# --- anl ---
|
||||
(
|
||||
"defpackage/anl.java",
|
||||
823,
|
||||
'var7.add("d", var1x)',
|
||||
'var7.add("d", (JsonElement)var1x)',
|
||||
),
|
||||
# --- aua: бридж mixin-интерфейса ---
|
||||
("defpackage/aua.java", 126, "((b.j)var0)", "((b.j)(Object)var0)"),
|
||||
("defpackage/aua.java", 241, "((b.j)var0)", "((b.j)(Object)var0)"),
|
||||
# --- dq: ams var5, blank EF ---
|
||||
("defpackage/dq.java", 41, "Object var5 = null;", "ams var5;"),
|
||||
("defpackage/dq.java", 42, "String var6 = null;", "String var6;"),
|
||||
# --- hy: typed comparator ---
|
||||
(
|
||||
"defpackage/hy.java",
|
||||
351,
|
||||
"Comparator var1 = Comparator.comparingInt(",
|
||||
"Comparator<hu> var1 = Comparator.comparingInt(",
|
||||
),
|
||||
# --- hl ---
|
||||
(
|
||||
"defpackage/hl.java",
|
||||
76,
|
||||
"LinkedHashMap var1 = new LinkedHashMap();",
|
||||
"LinkedHashMap<hk, hh> var1 = new LinkedHashMap();",
|
||||
),
|
||||
(
|
||||
"defpackage/hl.java",
|
||||
88,
|
||||
"ArrayList var7 = new ArrayList(var1.values());",
|
||||
"ArrayList<hh> var7 = new ArrayList(var1.values());",
|
||||
),
|
||||
# --- hn ---
|
||||
(
|
||||
"defpackage/hn.java",
|
||||
594,
|
||||
"HashMap var1 = null;",
|
||||
"HashMap<String, Integer> var1 = null;",
|
||||
),
|
||||
# --- j ---
|
||||
("defpackage/j.java", 221, "final i var3 = null;", "i var3 = null;"),
|
||||
# --- ld ---
|
||||
(
|
||||
"defpackage/ld.java",
|
||||
289,
|
||||
".thenCompose(Function.identity());",
|
||||
".thenCompose(var12x -> (java.util.concurrent.CompletionStage<HttpResponse<String>>)(Object)var12x);",
|
||||
),
|
||||
# --- mr: lambda вместо method ref (raw Optional) ---
|
||||
(
|
||||
"defpackage/mr.java",
|
||||
57,
|
||||
"ifPresent(var14::add);",
|
||||
"ifPresent(var17 -> var14.add((JsonElement)var17));",
|
||||
),
|
||||
(
|
||||
"defpackage/mr.java",
|
||||
110,
|
||||
"ifPresent(var14::add);",
|
||||
"ifPresent(var17 -> var14.add((JsonElement)var17));",
|
||||
),
|
||||
# --- nj ---
|
||||
("defpackage/nj.java", 1036, "new nl(var3, var3x,", "new nl((nk)var3, var3x,"),
|
||||
# --- op: merged slots ---
|
||||
("defpackage/op.java", 239, "Constable var3 = null;", "Object var3 = null;"),
|
||||
("defpackage/op.java", 242, "Constable var6 = null;", "Object var6 = null;"),
|
||||
("defpackage/op.java", 1179, "Object var4 = null;", "ob var4 = null;"),
|
||||
# --- ri ---
|
||||
(
|
||||
"defpackage/ri.java",
|
||||
1206,
|
||||
"ArrayList var2 = new ArrayList();",
|
||||
"ArrayList<rh> var2 = new ArrayList();",
|
||||
),
|
||||
# --- tf ---
|
||||
(
|
||||
"defpackage/tf.java",
|
||||
239,
|
||||
"Optional var16 = null;",
|
||||
"Optional<Vec3> var16 = null;",
|
||||
),
|
||||
(
|
||||
"defpackage/tf.java",
|
||||
279,
|
||||
"var16 = var15.clip(var2, var3);",
|
||||
"var16 = var15.clip(var2, var3).map(BlockHitResult::getLocation);",
|
||||
),
|
||||
(
|
||||
"defpackage/tf.java",
|
||||
482,
|
||||
"Optional var13 = null;",
|
||||
"Optional<BlockHitResult> var13 = null;",
|
||||
),
|
||||
(
|
||||
"defpackage/tf.java",
|
||||
489,
|
||||
"new EntityHitResult(var2, var1x)",
|
||||
"new EntityHitResult(var2, var1x.getLocation())",
|
||||
),
|
||||
# --- ux: int -> boolean ---
|
||||
(
|
||||
"defpackage/ux.java",
|
||||
281,
|
||||
"var16, var17, var18, var19);",
|
||||
"var16, var17 != 0, var18, var19);",
|
||||
),
|
||||
# --- vd / vu ---
|
||||
(
|
||||
"defpackage/vd.java",
|
||||
454,
|
||||
"var6.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0)));",
|
||||
"var6.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr((net.minecraft.world.entity.player.Player)var0)));",
|
||||
),
|
||||
(
|
||||
"defpackage/vu.java",
|
||||
841,
|
||||
"var4.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr(var0)));",
|
||||
"var4.sort(Comparator.comparingDouble(var0 -> -mc.player.distanceToSqr((net.minecraft.world.entity.player.Player)var0)));",
|
||||
),
|
||||
# --- ww ---
|
||||
(
|
||||
"defpackage/ww.java",
|
||||
147,
|
||||
"Optional var2 = decode(var0, var1);",
|
||||
"Optional<xd> var2 = decode(var0, var1);",
|
||||
),
|
||||
# --- agk ---
|
||||
(
|
||||
"defpackage/agk.java",
|
||||
346,
|
||||
"ArrayList var3 = null;",
|
||||
"ArrayList<agh> var3 = null;",
|
||||
),
|
||||
# --- b: bare bz + ParseResults ---
|
||||
(
|
||||
"b/bx.java",
|
||||
27,
|
||||
", bz.getInstance().getCommandManager().getSource());",
|
||||
", defpackage.bz.getInstance().getCommandManager().getSource());",
|
||||
),
|
||||
(
|
||||
"b/t.java",
|
||||
49,
|
||||
", bz.getInstance().getCommandManager().getSource());",
|
||||
", defpackage.bz.getInstance().getCommandManager().getSource());",
|
||||
),
|
||||
(
|
||||
"b/t.java",
|
||||
54,
|
||||
"getCompletionSuggestions(this.currentParse, cursor);",
|
||||
"getCompletionSuggestions((ParseResults<SharedSuggestionProvider>)this.currentParse, cursor);",
|
||||
),
|
||||
]
|
||||
|
||||
# (rel, old, new, expect)
|
||||
ALL_EDITS = [
|
||||
("defpackage/aeh.java", "((Object[])var6)", "((float[])var6)", 3),
|
||||
("defpackage/aua.java", "((b.j)var0)", "((b.j)(Object)var0)", 2),
|
||||
]
|
||||
|
||||
# content-based (unprivate ctors)
|
||||
CTOR_EDITS = [
|
||||
("defpackage/ara.java", "private ara()", "ara()"),
|
||||
("defpackage/vk.java", "private vk()", "vk()"),
|
||||
("defpackage/hh.java", "private hh(hk var1)", "hh(hk var1)"),
|
||||
]
|
||||
|
||||
IMPORTS = [
|
||||
("defpackage/gt.java", "import java.util.Iterator;"),
|
||||
("defpackage/aeo.java", "import net.minecraft.network.chat.MutableComponent;"),
|
||||
("b/t.java", "import net.minecraft.commands.SharedSuggestionProvider;"),
|
||||
]
|
||||
|
||||
|
||||
def main():
|
||||
by = collections.defaultdict(list)
|
||||
for row in EDITS:
|
||||
by[row[0]].append(row)
|
||||
# aua строки из EDITS уже есть (126/241) — ALL_EDITS по aua дублирует, убираем оттуда
|
||||
for rel, rows in by.items():
|
||||
for row in sorted(rows, key=lambda r: -r[1]):
|
||||
edit_line(rel, row[1], row[2], row[3], "n")
|
||||
for rel, old, new, expect in ALL_EDITS:
|
||||
if rel == "defpackage/aua.java":
|
||||
continue
|
||||
edit_all(rel, old, new, "n", expect)
|
||||
for rel, old, new in CTOR_EDITS:
|
||||
edit_all(rel, old, new, "ctor")
|
||||
for rel, imp in IMPORTS:
|
||||
add_import(rel, imp, "import")
|
||||
|
||||
for p, L in files.items():
|
||||
with open(p, "w", encoding="utf-8") as f:
|
||||
f.write("\n".join(L) + "\n")
|
||||
print(dict(stats))
|
||||
miss = {k: v for k, v in stats.items() if "MISS" in k or "COUNT" in k}
|
||||
if miss:
|
||||
print("PROBLEMS:", dict(miss))
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue