pri2ir: dynamic unary & binary expressions

NB1 Not every dynamic unary or binary expression is translated to
dynamic operator expressions literally. For example, assignments and
increments can have safe calls in LHS, which require some extra logic.

NB2 There are some open design questions left regarding how dynamic
expressions should actually be translated.
This commit is contained in:
Dmitry Petrov
2019-02-12 10:03:46 +03:00
parent 82701de87b
commit cf29dce4c2
15 changed files with 326 additions and 45 deletions
@@ -66,6 +66,26 @@ public class IrJsTextTestCaseGenerated extends AbstractIrJsTextTestCase {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicArrayIncrementDecrement.kt");
}
@TestMetadata("dynamicBinaryEqualityOperator.kt")
public void testDynamicBinaryEqualityOperator() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicBinaryEqualityOperator.kt");
}
@TestMetadata("dynamicBinaryLogicalOperator.kt")
public void testDynamicBinaryLogicalOperator() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicBinaryLogicalOperator.kt");
}
@TestMetadata("dynamicBinaryOperator.kt")
public void testDynamicBinaryOperator() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicBinaryOperator.kt");
}
@TestMetadata("dynamicBinaryRelationalOperator.kt")
public void testDynamicBinaryRelationalOperator() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicBinaryRelationalOperator.kt");
}
@TestMetadata("dynamicCall.kt")
public void testDynamicCall() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicCall.kt");
@@ -91,6 +111,11 @@ public class IrJsTextTestCaseGenerated extends AbstractIrJsTextTestCase {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicMemberIncrementDecrement.kt");
}
@TestMetadata("dynamicUnaryOperator.kt")
public void testDynamicUnaryOperator() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicUnaryOperator.kt");
}
@TestMetadata("dynamicWithImplicitCast.kt")
public void testDynamicWithImplicitCast() throws Exception {
runTest("compiler/testData/ir/irJsText/dynamic/dynamicWithImplicitCast.kt");