Add test with false/true positives for KT-24643

This commit is contained in:
Mikhail Glukhikh
2022-06-24 11:40:35 +02:00
committed by Space
parent 65bb6abae4
commit 3223d3c3e9
6 changed files with 70 additions and 0 deletions
@@ -8336,6 +8336,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty2.kt")
public void testUseTypeParameterOfExtensionProperty2() throws Exception {
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty2.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty_Disabled.kt")
public void testUseTypeParameterOfExtensionProperty_Disabled() throws Exception {
@@ -8336,6 +8336,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty2.kt")
public void testUseTypeParameterOfExtensionProperty2() throws Exception {
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty2.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty_Disabled.kt")
public void testUseTypeParameterOfExtensionProperty_Disabled() throws Exception {
@@ -8336,6 +8336,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty2.kt")
public void testUseTypeParameterOfExtensionProperty2() throws Exception {
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty2.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty_Disabled.kt")
public void testUseTypeParameterOfExtensionProperty_Disabled() throws Exception {
@@ -0,0 +1,30 @@
// FIR_IDENTICAL
// !LANGUAGE: +ForbidUsingExtensionPropertyTypeParameterInDelegate
// WITH_REFLECT
import kotlin.reflect.KProperty
import kotlin.properties.ReadOnlyProperty
fun <T, V> logged(getter: (T) -> V) =
ReadOnlyProperty<T, V> { thisRef, property ->
println("Getter for $property is invoked")
getter(thisRef)
}
val <T> List<T>.second: T <!DELEGATE_USES_EXTENSION_PROPERTY_TYPE_PARAMETER_ERROR!>by logged { it[1] }<!>
class Delegate<T>(private val fn: (List<T>) -> T) {
private var cache: T? = null
operator fun getValue(thisRef: List<T>, kProperty: KProperty<*>) =
cache ?: fn(thisRef).also { cache = it }
}
val <T> List<T>.leakingT: T <!DELEGATE_USES_EXTENSION_PROPERTY_TYPE_PARAMETER_ERROR!>by Delegate { it[0] }<!>
fun main() {
println(listOf("xx", "yy", "zz").leakingT)
val a = arrayListOf(1, 2, 3)
a.add(a.leakingT)
println(a) // [1, 2, 3, xx]!
}
@@ -0,0 +1,16 @@
package
public val </*0*/ T> kotlin.collections.List<T>.leakingT: T
public val </*0*/ T> kotlin.collections.List<T>.second: T
public fun </*0*/ T, /*1*/ V> logged(/*0*/ getter: (T) -> V): kotlin.properties.ReadOnlyProperty<T, V>
public fun main(): kotlin.Unit
public final class Delegate</*0*/ T> {
public constructor Delegate</*0*/ T>(/*0*/ fn: (kotlin.collections.List<T>) -> T)
private final var cache: T?
private final val fn: (kotlin.collections.List<T>) -> T
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final operator fun getValue(/*0*/ thisRef: kotlin.collections.List<T>, /*1*/ kProperty: kotlin.reflect.KProperty<*>): T
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -8342,6 +8342,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty2.kt")
public void testUseTypeParameterOfExtensionProperty2() throws Exception {
runTest("compiler/testData/diagnostics/tests/delegatedProperty/useTypeParameterOfExtensionProperty2.kt");
}
@Test
@TestMetadata("useTypeParameterOfExtensionProperty_Disabled.kt")
public void testUseTypeParameterOfExtensionProperty_Disabled() throws Exception {