• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wurstscript / WurstScript / 228

29 Nov 2023 05:00PM UTC coverage: 62.48% (-0.09%) from 62.574%
228

push

circleci

web-flow
Show dialog for choosing game path, cleanup (#1083)

* show dialog for choosing game path

* cleanup code

* remove logs and refactor

* remove confusing mpq error, make some mpq loads readonly

17295 of 27681 relevant lines covered (62.48%)

0.62 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.67
de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/translation/imtojass/StatementTranslation.java
1
package de.peeeq.wurstscript.translation.imtojass;
2

3
import de.peeeq.wurstscript.jassAst.JassExprFunctionCall;
4
import de.peeeq.wurstscript.jassAst.JassFunction;
5
import de.peeeq.wurstscript.jassAst.JassStatements;
6
import de.peeeq.wurstscript.jassAst.*;
7
import de.peeeq.wurstscript.jassIm.*;
8

9
import java.util.List;
10

11
import static de.peeeq.wurstscript.jassAst.JassAst.*;
12
public class StatementTranslation {
×
13

14

15
    public static void translate(ImExitwhen imExitwhen, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
16
        stmts.add(JassStmtExitwhen(imExitwhen.getCondition().translate(translator)));
1✔
17
    }
1✔
18

19
    public static void translate(ImIf imIf, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
20
        JassExpr cond = imIf.getCondition().translate(translator);
1✔
21
        JassStatements thenBlock = JassStatements();
1✔
22
        imIf.getThenBlock().translate(thenBlock, f, translator);
1✔
23
        JassStatements elseBlock = JassStatements();
1✔
24
        imIf.getElseBlock().translate(elseBlock, f, translator);
1✔
25
        stmts.add(JassStmtIf(cond, thenBlock, elseBlock));
1✔
26
    }
1✔
27

28

29
    public static void translate(ImLoop imLoop, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
30
        JassStatements body = JassStatements();
1✔
31
        imLoop.getBody().translate(body, f, translator);
1✔
32
        stmts.add(JassStmtLoop(body));
1✔
33
    }
1✔
34

35
    public static void translate(ImReturn imReturn, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
36
        if (imReturn.getReturnValue() instanceof ImNoExpr) {
1✔
37
            stmts.add(JassStmtReturnVoid());
1✔
38
        } else {
39
            ImExpr e = (ImExpr) imReturn.getReturnValue();
1✔
40
            JassExpr returnValue = e.translate(translator);
1✔
41
            stmts.add(JassStmtReturn(returnValue));
1✔
42
        }
43
    }
1✔
44

45
    public static void translate(ImSet imSet, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
46
        ImLExpr updatedExpr = imSet.getLeft();
1✔
47
        if (updatedExpr instanceof ImVarAccess) {
1✔
48
            ImVarAccess va = (ImVarAccess) updatedExpr;
1✔
49
            JassVar var = translator.getJassVarFor(va.getVar());
1✔
50
            JassExpr exprs = imSet.getRight().translate(translator);
1✔
51
            stmts.add(JassStmtSet(var.getName(), exprs));
1✔
52
        } else if (updatedExpr instanceof ImVarArrayAccess) {
1✔
53
            ImVarArrayAccess vaa = (ImVarArrayAccess) updatedExpr;
1✔
54
            JassVar var = translator.getJassVarFor(vaa.getVar());
1✔
55
            JassExpr indexes = vaa.getIndexes().get(0).translate(translator);
1✔
56
            JassExpr exprs = imSet.getRight().translate(translator);
1✔
57
            stmts.add(JassStmtSetArray(var.getName(), indexes, exprs));
1✔
58
        }
59
    }
1✔
60

61
    public static void translate(ImExpr imExpr, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
62
        JassExpr expr = imExpr.translate(translator);
1✔
63
        // only add the function calls from this expression, the rest can not have any side effects
64
        addAllCalls(stmts, expr);
1✔
65
    }
1✔
66

67

68
    private static void addAllCalls(List<JassStatement> stmts, de.peeeq.wurstscript.jassAst.Element expr) {
69
        if (expr instanceof JassExprFunctionCall) {
1✔
70
            JassExprFunctionCall fc = (JassExprFunctionCall) expr;
1✔
71
            stmts.add(JassAst.JassStmtCall(fc.getFuncName(), fc.getArguments().copy()));
1✔
72
        } else {
1✔
73
            // visit children
74
            for (int i = 0; i < expr.size(); i++) {
×
75
                addAllCalls(stmts, expr.get(i));
×
76
            }
77
        }
78
    }
1✔
79

80

81
    public static void translate(ImStmts imStmts, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
82
        for (ImStmt s : imStmts) {
1✔
83
            s.translate(stmts, f, translator);
1✔
84
        }
1✔
85
    }
1✔
86

87

88
    public static void translate(ImVarargLoop imVarargLoop, List<JassStatement> stmts, JassFunction f, ImToJassTranslator translator) {
89
        throw new Error("not implemented");
×
90
    }
91

92
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc