KT-19565: J2K: Determine mutability using iterator

#KT-19565 fixed
This commit is contained in:
Denis Grachev
2017-09-18 14:07:57 +03:00
committed by Simon Ogorodnik
parent d312996f3a
commit 0722c5c13a
7 changed files with 100 additions and 2 deletions
@@ -0,0 +1,19 @@
import java.util.*;
class Iterator {
Map<String, String> mutableMap1 = new HashMap<>();
Map<String, String> mutableMap2 = new HashMap<>();
void testFields() {
mutableMap1.values().add("")
mutableMap2.entrySet().iterator().remove();
}
void testFunctionParameters(Collection<String> immutableCollection, List<Integer> mutableList) {
for (Iterator<String> it = immutableCollection.iterator(); it.hasNext(); ) {
it.next();
}
mutableList.listIterator().add(2);
}
}
@@ -0,0 +1,20 @@
import java.util.*
internal class Iterator {
var mutableMap1: MutableMap<String, String> = HashMap()
var mutableMap2: MutableMap<String, String> = HashMap()
fun testFields() {
mutableMap1.values.add("")
mutableMap2.entries.iterator().remove()
}
fun testFunctionParameters(immutableCollection: Collection<String>, mutableList: MutableList<Int>) {
val it = immutableCollection.iterator()
while (it.hasNext()) {
it.next()
}
mutableList.listIterator().add(2)
}
}
@@ -0,0 +1,14 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestMutableCollection {
public final List<String> list = new ArrayList<>();
public void test() {
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
String s = it.next();
if (s.equals("")) it.remove();
}
}
}
@@ -0,0 +1,13 @@
import java.util.ArrayList
class TestMutableCollection {
val list: MutableList<String> = ArrayList()
fun test() {
val it = list.iterator()
while (it.hasNext()) {
val s = it.next()
if (s == "") it.remove()
}
}
}