Support lateinit modifier on top-level properties

Allow lateinit modifier on top-level properties.
Modifiers 'lateinit' and 'header' are incompatible.
This commit is contained in:
Dmitry Petrov
2017-06-01 14:42:13 +03:00
parent 78b69cad77
commit d951e957ea
6 changed files with 42 additions and 4 deletions
@@ -46,8 +46,8 @@ public abstract class A<T: Any, V: String?>(<!INAPPLICABLE_LATEINIT_MODIFIER!>la
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var String.e12: String
}
<!INAPPLICABLE_LATEINIT_MODIFIER, WRONG_MODIFIER_TARGET!>lateinit<!> val topLevel: String
<!WRONG_MODIFIER_TARGET!>lateinit<!> var topLevelMutable: String
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> val topLevel: String
lateinit var topLevelMutable: String
public interface Intf {
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var str: String
@@ -28,7 +28,7 @@ header var customAccessorVar: String
header <!CONST_VAL_WITHOUT_INITIALIZER!>const<!> val constVal: Int
header <!WRONG_MODIFIER_TARGET!>lateinit<!> var lateinitVar: String
<!INCOMPATIBLE_MODIFIERS!>header<!> <!INCOMPATIBLE_MODIFIERS!>lateinit<!> var lateinitVar: String
<!WRONG_MODIFIER_TARGET!>header<!> val delegated: String by Delegate
object Delegate { operator fun getValue(x: Any?, y: Any?): String = "" }
@@ -0,0 +1,12 @@
object Delegate {
operator fun getValue(instance: Any?, property: Any) : String = ""
operator fun setValue(instance: Any?, property: Any, value: String) {}
}
lateinit var testOk: String
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> val testErr0: Any
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var testErr1: Int
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var testErr2: Any?
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var testErr3: String = ""
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var testErr4 by Delegate
@@ -0,0 +1,17 @@
package
public lateinit val testErr0: kotlin.Any
public lateinit var testErr1: kotlin.Int
public lateinit var testErr2: kotlin.Any?
public lateinit var testErr3: kotlin.String
public lateinit var testErr4: kotlin.String
public lateinit var testOk: kotlin.String
public object Delegate {
private constructor Delegate()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final operator fun getValue(/*0*/ instance: kotlin.Any?, /*1*/ property: kotlin.Any): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun setValue(/*0*/ instance: kotlin.Any?, /*1*/ property: kotlin.Any, /*2*/ value: kotlin.String): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}