[NI] Don't resolve delegates twice
#KT-31219 Fixed #KT-31679 Fixed #KT-32249 Fixed
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// ISSUE: KT-31219
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
interface Intf
|
||||
|
||||
interface GenericIntf<T>
|
||||
|
||||
class Foo {
|
||||
private val generic1 by lazy {
|
||||
abstract class LocalIntf : GenericIntf<CharSequence>
|
||||
object : LocalIntf() {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// ISSUE: KT-31219
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
interface Intf
|
||||
|
||||
interface GenericIntf<T>
|
||||
|
||||
class Foo {
|
||||
private val generic1 by lazy {
|
||||
abstract class LocalIntf : GenericIntf<CharSequence>
|
||||
object : LocalIntf() {}
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package
|
||||
|
||||
public final class Foo {
|
||||
public constructor Foo()
|
||||
private final val generic1: Foo.generic1.<anonymous>.<no name provided>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface GenericIntf</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface Intf {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// ISSUE: KT-31679
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class MyDelegate<T>(p: () -> T) {
|
||||
operator fun getValue(thisRef: Any?, property: KProperty<*>): T = TODO()
|
||||
}
|
||||
|
||||
private val privateObj by MyDelegate {
|
||||
object {
|
||||
val x = 42
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
privateObj.<!UNRESOLVED_REFERENCE!>x<!>
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// ISSUE: KT-31679
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class MyDelegate<T>(p: () -> T) {
|
||||
operator fun getValue(thisRef: Any?, property: KProperty<*>): T = TODO()
|
||||
}
|
||||
|
||||
private val privateObj by MyDelegate {
|
||||
object {
|
||||
val x = 42
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
privateObj.x
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package
|
||||
|
||||
private val privateObj: privateObj.<anonymous>.<no name provided>
|
||||
public fun test(): kotlin.Unit
|
||||
|
||||
public final class MyDelegate</*0*/ T> {
|
||||
public constructor MyDelegate</*0*/ T>(/*0*/ p: () -> T)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final operator fun getValue(/*0*/ thisRef: kotlin.Any?, /*1*/ property: kotlin.reflect.KProperty<*>): T
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// ISSUE: KT-32249
|
||||
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Wrapper<T>(val name: String, val defaultValue: T)
|
||||
|
||||
private fun <T> wrapper(defaultValue: T) = object : ReadOnlyProperty<Any, Wrapper<T>> {
|
||||
override fun getValue(thisRef: Any, property: KProperty<*>): Wrapper<T> = null!!
|
||||
}
|
||||
|
||||
object Foo {
|
||||
val x by wrapper(true)
|
||||
val y: Wrapper<Boolean> by wrapper(true)
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// ISSUE: KT-32249
|
||||
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Wrapper<T>(val name: String, val defaultValue: T)
|
||||
|
||||
private fun <T> wrapper(defaultValue: T) = object : ReadOnlyProperty<Any, Wrapper<T>> {
|
||||
override fun getValue(thisRef: Any, property: KProperty<*>): Wrapper<T> = null!!
|
||||
}
|
||||
|
||||
object Foo {
|
||||
val x by wrapper(true)
|
||||
val y: Wrapper<Boolean> by wrapper(true)
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package
|
||||
|
||||
private fun </*0*/ T> wrapper(/*0*/ defaultValue: T): wrapper.<no name provided><T>
|
||||
|
||||
public object Foo {
|
||||
private constructor Foo()
|
||||
public final val x: Wrapper<kotlin.Boolean>
|
||||
public final val y: Wrapper<kotlin.Boolean>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class Wrapper</*0*/ T> {
|
||||
public constructor Wrapper</*0*/ T>(/*0*/ name: kotlin.String, /*1*/ defaultValue: T)
|
||||
public final val defaultValue: T
|
||||
public final val name: kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user