Skip to content

Commit e3fa0a4

Browse files
committed
fix build
1 parent b8fc8c8 commit e3fa0a4

3 files changed

Lines changed: 10 additions & 20 deletions

File tree

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstio/WurstCompilerJassImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ public JassProg transformProgToJass() {
394394
// eliminate
395395
beginPhase(2, "Eliminate generics");
396396
new EliminateGenerics(imTranslator2, imProg2).transform();
397-
imTranslator2.clearClassManagementVars();
397+
imTranslator2.clearStaleClassManagementVars();
398398
printDebugImProg("./test-output/im " + stage++ + "_genericsEliminated.im");
399399
timeTaker.endPhase();
400400
// eliminate classes

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtranslation/ImTranslator.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2102,29 +2102,21 @@ public Map<ImClass, ClassManagementVars> getClassManagementVars() {
21022102
return classManagementVars;
21032103
}
21042104

2105-
public void clearClassManagementVars() {
2105+
public void clearStaleClassManagementVars() {
21062106
if (classManagementVars == null) {
21072107
return;
21082108
}
2109-
Set<ClassManagementVars> oldVars = Collections.newSetFromMap(new IdentityHashMap<>());
2110-
oldVars.addAll(classManagementVars.values());
2111-
for (ClassManagementVars vars : oldVars) {
2112-
removeClassManagementVar(vars.free);
2113-
removeClassManagementVar(vars.freeCount);
2114-
removeClassManagementVar(vars.maxIndex);
2115-
removeClassManagementVar(vars.typeId);
2109+
if (classManagementVars.keySet().stream().anyMatch(c -> !imProg.getClasses().contains(c))
2110+
|| classManagementVars.values().stream().anyMatch(this::hasStaleClassManagementVars)) {
2111+
classManagementVars = null;
21162112
}
2117-
classManagementVars = null;
21182113
}
21192114

2120-
private void removeClassManagementVar(ImVar var) {
2121-
imProg.getGlobals().remove(var);
2122-
List<ImSet> inits = imProg.getGlobalInits().remove(var);
2123-
if (inits != null) {
2124-
for (ImSet init : inits) {
2125-
init.replaceBy(ImHelper.nullExpr());
2126-
}
2127-
}
2115+
private boolean hasStaleClassManagementVars(ClassManagementVars vars) {
2116+
return !imProg.getGlobals().contains(vars.free)
2117+
|| !imProg.getGlobals().contains(vars.freeCount)
2118+
|| !imProg.getGlobals().contains(vars.maxIndex)
2119+
|| !imProg.getGlobals().contains(vars.typeId);
21282120
}
21292121

21302122
private Partitions<ImClass> buildClassPartitions() {

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtranslation/UsedVariables.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,8 @@ private void handleLExprReads(ImLExpr expr) {
6464
if (expr instanceof ImVarAccess) {
6565
// Write only, skip
6666
} else if (expr instanceof ImMemberAccess) {
67-
result.add(((ImMemberAccess) expr).getVar());
6867
((ImMemberAccess) expr).getReceiver().accept(this);
6968
} else if (expr instanceof ImVarArrayAccess) {
70-
result.add(((ImVarArrayAccess) expr).getVar());
7169
((ImVarArrayAccess) expr).getIndexes().accept(this);
7270
} else if (expr instanceof ImTupleSelection) {
7371
handleLExprReads((ImLExpr) ((ImTupleSelection) expr).getTupleExpr());

0 commit comments

Comments
 (0)