New J2K: handle correctly short names which are imported by default in kotlin (like List or Result)

Kotlin default import inserter was unable to correctly insert such imports

#KT-34165 fixed
This commit is contained in:
Ilya Kirillov
2019-10-04 12:30:02 +03:00
parent 81341e3fd3
commit f950a0246c
53 changed files with 181 additions and 40 deletions
@@ -1,6 +1,7 @@
package to
import java.io.File
import java.util.ArrayList
class JavaClass {
@@ -1,5 +1,7 @@
package to
import java.util.ArrayList
class JavaClass {
internal fun foo() {
@@ -1,3 +1,5 @@
import java.util.HashSet
internal class Foo {
fun foo(o: HashSet<*>) {
val o2: HashSet<*> = o
@@ -1,3 +1,5 @@
import java.util.HashSet
internal class Foo {
fun foo(o: HashSet<*>) {
var foo = 0
+2
View File
@@ -1,5 +1,7 @@
package demo
import java.util.HashMap
internal class Test {
constructor() {}
constructor(s: String?) {}
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class A {
private val list1 = ArrayList<String>()
private val list2: MutableList<String> = ArrayList()
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class A {
private val field1: List<String> = ArrayList()
val field2: List<String> = ArrayList()
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class C {
fun foo1(list: MutableList<String?>) {
for (i in list.indices) {
+2
View File
@@ -1,3 +1,5 @@
import java.util.HashMap
internal object Test {
@JvmStatic
fun main(args: Array<String>) {
+2
View File
@@ -1,6 +1,8 @@
// ERROR: The integer literal does not conform to the expected type CapturedType(*)
// ERROR: The integer literal does not conform to the expected type CapturedType(*)
// ERROR: Type argument is not within its bounds: should be subtype of 'String?'
import java.util.HashMap
internal class G<T : String?>(t: T)
class Java {
internal fun test() {
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal object A {
@JvmStatic
fun main(args: Array<String>) {
+2
View File
@@ -1,5 +1,7 @@
package test
import java.util.HashMap
class TestPrimitiveFromMap {
fun foo(map: HashMap<String?, Int?>): Int {
return map["zzz"]!!
+2
View File
@@ -1,3 +1,5 @@
import java.util.HashMap
class TestMethodReference {
private val hashMap = HashMap<String, String>()
fun update(key: String, msg: String) {
+2
View File
@@ -1,3 +1,5 @@
import java.util.HashMap
class TestMethodReference {
private val hashMap = HashMap<String, String>()
fun update(key: String, msg: String) {
+1
View File
@@ -1,4 +1,5 @@
import Foo.SomeClass
import java.util.ArrayList
internal interface FooInterface {
fun foo(): ArrayList<out SomeClass?>?
+2
View File
@@ -1,3 +1,5 @@
import java.util.HashMap
class TestClass {
private val hashMap: Map<String, List<Int>> = HashMap()
}
+1
View File
@@ -1,3 +1,4 @@
import java.util.ArrayList
import java.util.function.Consumer
internal class Test {
+2
View File
@@ -1,5 +1,7 @@
package demo
import demo.One
internal class Container {
var myString = "1"
}
+2
View File
@@ -1,5 +1,7 @@
package demo
import demo.One
internal class Container {
var myInt = 1
}
+2
View File
@@ -1,5 +1,7 @@
package demo
import demo.One
internal class Container {
var myInt = 1
}
+2
View File
@@ -1,5 +1,7 @@
package demo
import demo.One
internal class Container {
var myInt = 1
}
+2
View File
@@ -1,5 +1,7 @@
package demo
import demo.One
internal class Container {
var myBoolean = true
}
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class A {
var list: List<String> = ArrayList()
}
+1
View File
@@ -1,3 +1,4 @@
import java.util.Comparator
import java.util.stream.Collectors
internal class Test {
@@ -1,3 +1,4 @@
import java.util.Comparator
import java.util.stream.Collectors
internal class Test {
+2
View File
@@ -1,4 +1,6 @@
// ERROR: Unresolved reference: LinkedList
import java.util.ArrayList
class ForEach {
fun test() {
val xs = ArrayList<Any>()
+2
View File
@@ -1,4 +1,6 @@
// ERROR: Unresolved reference: LinkedList
import java.util.ArrayList
class Lists {
fun test() {
val xs: MutableList<Any?> = ArrayList()
@@ -1,3 +1,5 @@
import java.util.HashMap
internal enum class E {
A, B, C
}
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class A {
fun createCollection(): MutableCollection<String> {
return ArrayList()
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class A {
private val collection: MutableCollection<String>
fun createCollection(): MutableCollection<String> {
+2
View File
@@ -1,3 +1,5 @@
import java.util.HashMap
internal class IteratorTest {
var mutableMap1: MutableMap<String, String> = HashMap()
var mutableMap2: MutableMap<String, String> = HashMap()
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
class TestMutableCollection {
val list: MutableList<String> = ArrayList()
fun test() {
@@ -1,3 +1,5 @@
import java.util.ArrayList
class Test {
internal var list: List<MutableList<Int>> = ArrayList()
fun test() {
@@ -1,3 +1,5 @@
import java.util.ArrayList
class Owner {
var list: MutableList<String> = ArrayList()
}
@@ -1,5 +1,7 @@
package test
import java.util.ArrayList
internal class User {
fun main() {
val list: List<*> = ArrayList<Any?>()
@@ -1,7 +1,9 @@
package test
import java.util.ArrayList
internal class User {
fun main() {
val list: List<*> = ArrayList<Any?>()
}
}
}
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class User {
fun main() {
val list: List<String> = ArrayList()
@@ -1,5 +1,7 @@
package org.test
import java.util.ArrayList
internal class Member
internal class User {
fun main() {
+2
View File
@@ -1,5 +1,7 @@
package test
import java.util.ArrayList
class Test {
private var myProp: String? = null
private var myIntProp: Int? = null
+1
View File
@@ -1,5 +1,6 @@
import javaApi.JavaClass
import kotlinApi.KotlinClass
import java.util.HashMap
internal class X {
operator fun get(index: Int): Int {
@@ -1,3 +1,5 @@
import java.util.HashMap
internal class Test {
fun test(map: HashMap<String?, String?>) {
map.forEach { (key: String?, value: String?) -> foo(key, value) }
+2
View File
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class C<T> {
fun foo1(src: Collection<T>) {
val t = src.iterator().next()
+2
View File
@@ -1,5 +1,7 @@
package demo
import java.util.HashMap
internal class Test {
fun main() {
val commonMap = HashMap<String, Int>()
+2
View File
@@ -1,5 +1,7 @@
package demo
import java.util.ArrayList
internal class Test {
fun main() {
val common: List<String> = ArrayList()
@@ -1,3 +1,5 @@
import java.util.ArrayList
internal class A {
private val field1: List<String> = ArrayList()
val field2: List<String> = ArrayList()
@@ -1,5 +1,7 @@
package demo
import java.util.ArrayList
class TestJava {
fun f(result: Function1<String?, Unit>) {
result.invoke("a")
@@ -1,2 +1,4 @@
import java.util.ArrayList
internal interface I<T : List<Iterator<String?>?>?>
internal class C : I<ArrayList<Iterator<String?>?>?>
+2
View File
@@ -1,3 +1,5 @@
import java.util.HashMap
internal class A {
fun foo() {
val map1 = getMap1<String, Int>()
+2 -1
View File
@@ -2,7 +2,8 @@
// ERROR: Type mismatch: inferred type is (CapturedType(*)!!..Any?) but String? was expected
// ERROR: Type mismatch: inferred type is Any? but String? was expected
// ERROR: Type mismatch: inferred type is (CapturedType(*)!!..Any?) but String? was expected
// ERROR: Type mismatch: inferred type is kotlin.collections.HashMap<Any?, Any?> /* = java.util.HashMap<Any?, Any?> */ but Map<String?, String?> was expected
// ERROR: Type mismatch: inferred type is HashMap<Any?, Any?> but Map<String?, String?> was expected
import java.util.HashMap
import java.util.Properties
internal object A {