Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-08 04:20:06 +01:00
Add more expression test cases, fix bugs
Also added a few more comments + reorganized exceptions that are invoke-internal. (cherry picked from commit cbd686548fd62248fabbaab551a6875a14170957)
Dieser Commit ist enthalten in:
Ursprung
cd1948648c
Commit
eb950bd75e
@ -678,13 +678,10 @@ class CompilingVisitor extends ExpressionBaseVisitor<MethodHandle> {
|
|||||||
// MH:oldResult,result = (ExecutionData)Double
|
// MH:oldResult,result = (ExecutionData)Double
|
||||||
|
|
||||||
// Execute `oldResult` but ignore its return value, then execute result and return that.
|
// Execute `oldResult` but ignore its return value, then execute result and return that.
|
||||||
// If either result is `defaultResult`, it's bogus, so just skip it
|
// If `oldResult` (the old value) is `defaultResult`, it's bogus, so just skip it
|
||||||
if (oldResult == DEFAULT_RESULT) {
|
if (oldResult == DEFAULT_RESULT) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (result == DEFAULT_RESULT) {
|
|
||||||
return oldResult;
|
|
||||||
}
|
|
||||||
// Add a dummy Double parameter to the end
|
// Add a dummy Double parameter to the end
|
||||||
// MH:dummyDouble = (ExecutionData, Double)Double
|
// MH:dummyDouble = (ExecutionData, Double)Double
|
||||||
MethodHandle dummyDouble = MethodHandles.dropArguments(
|
MethodHandle dummyDouble = MethodHandles.dropArguments(
|
||||||
|
@ -55,7 +55,17 @@ class ExpressionTest extends BaseExpressionTest {
|
|||||||
testCase("0 || 5", 5),
|
testCase("0 || 5", 5),
|
||||||
testCase("2 || 5", 2),
|
testCase("2 || 5", 2),
|
||||||
testCase("2 && 5", 5),
|
testCase("2 && 5", 5),
|
||||||
testCase("5 && 0", 0)
|
testCase("5 && 0", 0),
|
||||||
|
// check ternaries
|
||||||
|
testCase("false ? 1 : 2", 2),
|
||||||
|
testCase("true ? 1 : 2", 1),
|
||||||
|
// - ternary binds inside
|
||||||
|
testCase("true ? true ? 1 : 2 : 3", 1),
|
||||||
|
testCase("true ? false ? 1 : 2 : 3", 2),
|
||||||
|
testCase("false ? true ? 1 : 2 : 3", 3),
|
||||||
|
testCase("false ? false ? 1 : 2 : 3", 3),
|
||||||
|
// check return
|
||||||
|
testCase("return 1; 0", 1)
|
||||||
);
|
);
|
||||||
return testCases.stream()
|
return testCases.stream()
|
||||||
.map(testCase -> DynamicTest.dynamicTest(
|
.map(testCase -> DynamicTest.dynamicTest(
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren