Fix "not initialized" on lateinit property (KT-9369)

This commit is contained in:
Yan Zhulanow
2015-09-29 20:21:44 +03:00
parent aa573c2e31
commit 8d5cbeeab0
3 changed files with 18 additions and 1 deletions
@@ -376,7 +376,8 @@ public class JetFlowInformationProvider {
boolean isDefinitelyInitialized = ctxt.exitInitState.definitelyInitialized();
VariableDescriptor variableDescriptor = ctxt.variableDescriptor;
if (variableDescriptor instanceof PropertyDescriptor) {
if (!trace.get(BindingContext.BACKING_FIELD_REQUIRED, (PropertyDescriptor) variableDescriptor)) {
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) variableDescriptor;
if (propertyDescriptor.isLateInit() || !trace.get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) {
isDefinitelyInitialized = true;
}
}
+8
View File
@@ -54,4 +54,12 @@ public abstract class AbstractClass {
public class AbstractClassImpl : AbstractClass() {
override lateinit var str: String
}
public class B {
lateinit var a: String
init {
a.length()
}
}
+8
View File
@@ -45,6 +45,14 @@ public final class AbstractClassImpl : AbstractClass {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B {
public constructor B()
public final lateinit var a: 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
}
public final class CustomDelegate {
public constructor CustomDelegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean