[JS IR BE]: support dynamic_var["foo"] = "bar"

Used EQ origin to detect. Added a test to check dynamic_var = "bar" case
is not affected
This commit is contained in:
Anton Bannykh
2018-10-09 19:41:49 +03:00
parent 7afb81a7df
commit 8c6337f3f6
37 changed files with 8 additions and 36 deletions
@@ -260,7 +260,7 @@ class IntrinsicifyCallsLowering(private val context: JsIrBackendContext) : FileL
put(Name.identifier("equals"), ::transformEqualsMethodCall)
}
dynamicCallOriginToIrFunction.run {
dynamicCallOriginToIrFunction.apply {
put(IrStatementOrigin.EXCL, context.intrinsics.jsNot)
put(IrStatementOrigin.LT, context.intrinsics.jsLt)
@@ -296,6 +296,8 @@ class IntrinsicifyCallsLowering(private val context: JsIrBackendContext) : FileL
put(IrStatementOrigin.POSTFIX_INCR, context.intrinsics.jsPostfixInc)
put(IrStatementOrigin.POSTFIX_DECR, context.intrinsics.jsPostfixDec)
put(IrStatementOrigin.GET_ARRAY_ELEMENT, context.intrinsics.jsArrayGet)
// TODO add a special statement origin, e.g. SET_ARRAY_ELEMENT
put(IrStatementOrigin.EQ, context.intrinsics.jsArraySet)
}
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
operator fun HashMap<String, Int?>.set(index: String, elem: Int?) {
this.put(index, elem)
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
operator fun <K, V> MutableMap<K, V>.set(k : K, v : V) = put(k, v)
fun box() : String {
@@ -1,4 +1,4 @@
// IGNORE_BACKEND: JS_IR, JVM_IR
// IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME
class Itr : Iterator<String> by ArrayList<String>().iterator()
@@ -1,4 +1,4 @@
// IGNORE_BACKEND: JS_IR, JVM_IR
// IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME
class Itr : Iterator<String> by ArrayList<String>().iterator()
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
class Itr : Iterator<String> by ArrayList<String>().iterator()
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
class Itr : Iterator<String> by ArrayList<String>().iterator()
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
class Itr : Iterator<String> by ArrayList<String>().iterator()
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
class Itr : Iterator<String> by ArrayList<String>().iterator()
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: NATIVE
interface A : Set<String>
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
fun box() : String{
val set = HashSet<String>()
set.add("foo")
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
fun contains(set: Set<Any>, x: Int): Boolean = when {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
fun foo() : Int =
try {
2
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
import kotlin.test.*
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
fun <K: Any, V: Any> foo(k: K, v: V) {
val map = HashMap<K, V>()
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
fun box(): String {
val map: MutableMap<String, Int> = HashMap<String, Int>()
+1 -1
View File
@@ -1,4 +1,4 @@
// IGNORE_BACKEND: JS_IR, JVM_IR
// IGNORE_BACKEND: JVM_IR
fun box() : String {
if (!testIteratingOverMap1()) return "fail 1"
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
fun box(): String {
@@ -1,5 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
object O {
val mmmap = HashMap<String, Int>();
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
fun box(): String {
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
fun box(): String {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
val targetNameLists: Map<String, String> = mapOf("1" to "OK")
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
package whats.the.difference
fun iarray(vararg a : Int) = a // BUG
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1282
package foo
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1317
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1292
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1302
import kotlin.reflect.KProperty
@@ -21,6 +21,8 @@ fun box(): String {
assertEquals(9.79999999999999, b)
c += a * 3 + b / n
assertEquals("text1318.233333333333334", c)
a = 14
assertEquals(14, a)
return "OK"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1231
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1652
// CHECK_NOT_CALLED_IN_SCOPE: function=component1 scope=test1
// CHECK_NOT_CALLED_IN_SCOPE: function=component1 scope=test2
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1211
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1525
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1661
/*
* Copy of JVM-backend test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1211
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1557
// KT-2468 ArrayList<String> is List<String> or HashSet<String> is Set<String> fails in generated JS code
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1284
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1300
package foo