Fix "Specify type explicitly" intention with generic type

#KT-27641 Fixed
 #KT-30252 Fixed
This commit is contained in:
Dmitry Gridin
2019-03-11 18:26:10 +07:00
parent 57040f6f9d
commit 6b8547f57b
25 changed files with 272 additions and 38 deletions
@@ -0,0 +1,5 @@
// WITH_RUNTIME
inline fun <reified T> foo<caret>() = of(T::class.java)
class Foo<F>
fun <F> of(c: Class<F>): Foo<Foo<F>> = Foo()
@@ -0,0 +1,5 @@
// WITH_RUNTIME
inline fun <reified T> foo(): Foo<Foo<T>> = of(T::class.java)
class Foo<F>
fun <F> of(c: Class<F>): Foo<Foo<F>> = Foo()
@@ -0,0 +1,5 @@
// WITH_RUNTIME
inline fun <reified T> foo<caret>() = of(T::class.java)
class Foo<F>
fun <F> of(c: Class<F>): Foo<F> = Foo()
@@ -0,0 +1,5 @@
// WITH_RUNTIME
inline fun <reified T> foo(): Foo<T> = of(T::class.java)
class Foo<F>
fun <F> of(c: Class<F>): Foo<F> = Foo()
@@ -0,0 +1,9 @@
class A<T>
class B<T>
class C<T>
class D<K, V>
class E
private fun test()<caret> = {
class Local
C<D<A<Local>, B<D<Local, A<E>>>>>()
}
@@ -0,0 +1,9 @@
class A<T>
class B<T>
class C<T>
class D<K, V>
class E
private fun test(): () -> C<*> = {
class Local
C<D<A<Local>, B<D<Local, A<E>>>>>()
}
@@ -0,0 +1,8 @@
class A<T>
class B<T>
class C<T>
class D<K, V>
class E
private fun test()<caret> = {
C<D<A<E>, B<D<C<E>, A<E>>>>>()
}
@@ -0,0 +1,8 @@
class A<T>
class B<T>
class C<T>
class D<K, V>
class E
private fun test(): () -> C<D<A<E>, B<D<C<E>, A<E>>>>> = {
C<D<A<E>, B<D<C<E>, A<E>>>>>()
}
@@ -0,0 +1,6 @@
class F
class TestClass<V, K>
private fun test()<caret> = {
class Local
TestClass<F, Local>()
}
@@ -0,0 +1,6 @@
class F
class TestClass<V, K>
private fun test(): () -> TestClass<F, *> = {
class Local
TestClass<F, Local>()
}
@@ -0,0 +1,7 @@
open class F
class TestClass<V, out K>
private fun test()<caret> = {
class Local : F()
TestClass<F, Local>()
}
@@ -0,0 +1,7 @@
open class F
class TestClass<V, out K>
private fun test(): () -> TestClass<F, F> = {
class Local : F()
TestClass<F, Local>()
}
@@ -0,0 +1,7 @@
open class F
class TestClass<V, out K>
private fun test()<caret> = {
class Local
TestClass<F, Local?>()
}
@@ -0,0 +1,7 @@
open class F
class TestClass<V, out K>
private fun test(): () -> TestClass<F, Any?> = {
class Local
TestClass<F, Local?>()
}
@@ -0,0 +1,5 @@
class TestClass<T>
private fun test()<caret> = {
class Local
TestClass<Local>()
}
@@ -0,0 +1,5 @@
class TestClass<T>
private fun test(): () -> TestClass<*> = {
class Local
TestClass<Local>()
}
@@ -0,0 +1,8 @@
open class F
class B<out T>
class K<out T>
private fun check()<caret> = {
class Local : F()
B<K<Local>>()
}
@@ -0,0 +1,8 @@
open class F
class B<out T>
class K<out T>
private fun check(): () -> B<K<F>> = {
class Local : F()
B<K<Local>>()
}
@@ -0,0 +1,8 @@
open class F
class B<out T>
class K<T>
private fun check()<caret> = {
class Local : F()
B<K<Local>>()
}
@@ -0,0 +1,8 @@
open class F
class B<out T>
class K<T>
private fun check(): () -> B<K<*>> = {
class Local : F()
B<K<Local>>()
}
@@ -0,0 +1,8 @@
open class F
class B<T>
class K<out T>
private fun check()<caret> = {
class Local : F()
B<K<Local>>()
}
@@ -0,0 +1,8 @@
open class F
class B<T>
class K<out T>
private fun check(): () -> B<*> = {
class Local : F()
B<K<Local>>()
}