Commit delegation expression's trace with errors if we couldn't extract type info for it
^KT-44843 Fixed
This commit is contained in:
+6
@@ -8355,6 +8355,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
|||||||
runTest("compiler/testData/diagnostics/tests/delegation/kt40510.kt");
|
runTest("compiler/testData/diagnostics/tests/delegation/kt40510.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt44843.kt")
|
||||||
|
public void testKt44843() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/delegation/kt44843.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt8154.kt")
|
@TestMetadata("kt8154.kt")
|
||||||
public void testKt8154() throws Exception {
|
public void testKt8154() throws Exception {
|
||||||
|
|||||||
+6
@@ -8355,6 +8355,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
|||||||
runTest("compiler/testData/diagnostics/tests/delegation/kt40510.kt");
|
runTest("compiler/testData/diagnostics/tests/delegation/kt40510.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt44843.kt")
|
||||||
|
public void testKt44843() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/delegation/kt44843.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt8154.kt")
|
@TestMetadata("kt8154.kt")
|
||||||
public void testKt8154() throws Exception {
|
public void testKt8154() throws Exception {
|
||||||
|
|||||||
@@ -560,7 +560,11 @@ class DelegatedPropertyResolver(
|
|||||||
traceToResolveDelegatedProperty, false, delegateExpression, ContextDependency.DEPENDENT
|
traceToResolveDelegatedProperty, false, delegateExpression, ContextDependency.DEPENDENT
|
||||||
)
|
)
|
||||||
|
|
||||||
var delegateType = delegateTypeInfo.type ?: return null
|
var delegateType = delegateTypeInfo.type ?: run {
|
||||||
|
traceToResolveDelegatedProperty.commit()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
var delegateDataFlow = delegateTypeInfo.dataFlowInfo
|
var delegateDataFlow = delegateTypeInfo.dataFlowInfo
|
||||||
|
|
||||||
val delegateTypeConstructor = delegateType.constructor
|
val delegateTypeConstructor = delegateType.constructor
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
val a by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>a<!>
|
val a by <!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>a<!>
|
||||||
|
|
||||||
val b by Delegate(<!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>b<!>)
|
val b by Delegate(<!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>b<!>)
|
||||||
|
|
||||||
val c by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, UNINITIALIZED_VARIABLE!>d<!>
|
val c by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, UNINITIALIZED_VARIABLE!>d<!>
|
||||||
val d by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
|
val d by <!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>c<!>
|
||||||
|
|
||||||
class Delegate(i: Int) {
|
class Delegate(i: Int) {
|
||||||
operator fun getValue(t: Any?, p: KProperty<*>): Int {
|
operator fun getValue(t: Any?, p: KProperty<*>): Int {
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
// FILE: test.kt
|
||||||
|
val bar2 by bar2(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||||
|
|
||||||
|
// FILE: lt/neworld/compiler/Foo.kt
|
||||||
|
package lt.neworld.compiler
|
||||||
|
|
||||||
|
class Foo {
|
||||||
|
val bar by bar(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: lt/neworld/compiler/bar/Bar.kt
|
||||||
|
package lt.neworld.compiler.bar
|
||||||
|
|
||||||
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
fun <T, V> bar() = Bar<T, V>()
|
||||||
|
|
||||||
|
class Bar<T, V> : ReadOnlyProperty<T, V> {
|
||||||
|
override fun getValue(thisRef: T, property: KProperty<*>): V {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
// FILE: test.kt
|
||||||
|
val bar2 by <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>bar2<!>()<!>
|
||||||
|
|
||||||
|
// FILE: lt/neworld/compiler/Foo.kt
|
||||||
|
package lt.neworld.compiler
|
||||||
|
|
||||||
|
class Foo {
|
||||||
|
val bar by <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>bar<!>()<!>
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: lt/neworld/compiler/bar/Bar.kt
|
||||||
|
package lt.neworld.compiler.bar
|
||||||
|
|
||||||
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
fun <T, V> bar() = Bar<T, V>()
|
||||||
|
|
||||||
|
class Bar<T, V> : ReadOnlyProperty<T, V> {
|
||||||
|
override fun getValue(thisRef: T, property: KProperty<*>): V {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public val bar2: [ERROR : <ERROR FUNCTION RETURN TYPE>]
|
||||||
|
|
||||||
|
package lt {
|
||||||
|
|
||||||
|
package lt.neworld {
|
||||||
|
|
||||||
|
package lt.neworld.compiler {
|
||||||
|
|
||||||
|
public final class Foo {
|
||||||
|
public constructor Foo()
|
||||||
|
public final val bar: [ERROR : <ERROR FUNCTION RETURN TYPE>]
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
package lt.neworld.compiler.bar {
|
||||||
|
public fun </*0*/ T, /*1*/ V> bar(): lt.neworld.compiler.bar.Bar<T, V>
|
||||||
|
|
||||||
|
public final class Bar</*0*/ T, /*1*/ V> : kotlin.properties.ReadOnlyProperty<T, V> {
|
||||||
|
public constructor Bar</*0*/ T, /*1*/ V>()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ fun getValue(/*0*/ thisRef: T, /*1*/ property: kotlin.reflect.KProperty<*>): V
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+6
@@ -8361,6 +8361,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/delegation/kt40510.kt");
|
runTest("compiler/testData/diagnostics/tests/delegation/kt40510.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt44843.kt")
|
||||||
|
public void testKt44843() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/delegation/kt44843.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt8154.kt")
|
@TestMetadata("kt8154.kt")
|
||||||
public void testKt8154() throws Exception {
|
public void testKt8154() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user