[FIR] Add diagnostic INAPPLICABLE_LATEINIT_MODIFIER + some builtin types

This commit is contained in:
Nick
2020-08-14 11:36:14 +03:00
parent 091e12c093
commit 7e1c2cfd36
21 changed files with 399 additions and 45 deletions
@@ -9,7 +9,7 @@ fun test() {
val <T : __UNRESOLVED__> a1 = ""
val <T : String> a2 = 0
const val <T> a3 = 0
lateinit val <T> a4 = 0
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val <T> a4 = 0<!>
val <T> a5 by Delegate<Int>()
val <T> a6 by <!INAPPLICABLE_CANDIDATE!>Delegate<<!UNRESOLVED_REFERENCE!>T<!>>()<!>
}
@@ -9,7 +9,7 @@ fun test() {
val <T : __UNRESOLVED__> a1 = ""
val <T : String> a2 = 0
const val <T> a3 = 0
lateinit val <T> a4 = 0
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val <T> a4 = 0<!>
val <T> a5 by Delegate<Int>()
val <T> a6 by <!INAPPLICABLE_CANDIDATE!>Delegate<<!UNRESOLVED_REFERENCE!>T<!>>()<!>
}
@@ -10,9 +10,9 @@ object Delegate {
fun test() {
lateinit val test0: Any
lateinit var test1: Int
lateinit var test2: Any?
lateinit var test3: String = ""
lateinit var test4 by Delegate
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val test0: Any<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var test1: Int<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var test2: Any?<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var test3: String = ""<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var test4 by Delegate<!>
}
@@ -8,12 +8,12 @@ class CustomDelegate {
public abstract class A<T: Any, V: String?>(lateinit var p2: String) {
public lateinit val a: String
lateinit val b: T
<!INAPPLICABLE_LATEINIT_MODIFIER!>public lateinit val a: String<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val b: T<!>
private lateinit var c: CharSequence
lateinit val d: String
get
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val d: String
get<!>
public lateinit var e: String
get
@@ -23,22 +23,22 @@ public abstract class A<T: Any, V: String?>(lateinit var p2: String) {
lateinit var a: String
}
lateinit var e1: V
lateinit var e2: String?
lateinit var e3: Int
lateinit var e4: Int?
lateinit var e5 = "A"
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e1: V<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e2: String?<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e3: Int<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e4: Int?<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e5 = "A"<!>
// With initializer, primitive
lateinit var e6 = 3
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e6 = 3<!>
lateinit var e7 by CustomDelegate()
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e7 by CustomDelegate()<!>
lateinit var e8: String
get() = "A"
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e8: String
get() = "A"<!>
lateinit var e9: String
set(v) { field = v }
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e9: String
set(v) { field = v }<!>
abstract lateinit var e10: String
@@ -47,7 +47,7 @@ public abstract class A<T: Any, V: String?>(lateinit var p2: String) {
lateinit var String.e12: String
}
lateinit val topLevel: String
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val topLevel: String<!>
lateinit var topLevelMutable: String
public interface Intf {
@@ -8,12 +8,12 @@ class CustomDelegate {
public abstract class A<T: Any, V: String?>(lateinit var p2: String) {
public lateinit val a: String
lateinit val b: T
<!INAPPLICABLE_LATEINIT_MODIFIER!>public lateinit val a: String<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val b: T<!>
private lateinit var c: CharSequence
lateinit val d: String
get
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val d: String
get<!>
public lateinit var e: String
get
@@ -23,22 +23,22 @@ public abstract class A<T: Any, V: String?>(lateinit var p2: String) {
lateinit var a: String
}
lateinit var e1: V
lateinit var e2: String?
lateinit var e3: Int
lateinit var e4: Int?
lateinit var e5 = "A"
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e1: V<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e2: String?<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e3: Int<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e4: Int?<!>
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e5 = "A"<!>
// With initializer, primitive
lateinit var e6 = 3
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e6 = 3<!>
lateinit var e7 by CustomDelegate()
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e7 by CustomDelegate()<!>
lateinit var e8: String
get() = "A"
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e8: String
get() = "A"<!>
lateinit var e9: String
set(v) { field = v }
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit var e9: String
set(v) { field = v }<!>
abstract lateinit var e10: String
@@ -47,7 +47,7 @@ public abstract class A<T: Any, V: String?>(lateinit var p2: String) {
lateinit var String.e12: String
}
lateinit val topLevel: String
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit val topLevel: String<!>
lateinit var topLevelMutable: String
public interface Intf {
@@ -7,8 +7,8 @@ object Delegate {
lateinit var testOk: String
lateinit val testErr0: Any
lateinit var testErr1: Int
lateinit var testErr2: Any?
lateinit var testErr3: String = ""
lateinit var testErr4 by Delegate
<!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<!>