Check language feature support for local and top-level lateinit vars

This commit is contained in:
Dmitry Petrov
2017-06-02 12:07:45 +03:00
parent 01cce59c35
commit bbf9bf91fc
19 changed files with 83 additions and 32 deletions
@@ -1,3 +1,5 @@
// LANGUAGE_VERSION: 1.2
fun runNoInline(f: () -> Unit) = f()
fun box(): String {
@@ -1,3 +1,5 @@
// LANGUAGE_VERSION: 1.2
fun box(): String {
lateinit var ok: String
run {
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
// FILE: lateinit.kt
@@ -1,3 +1,5 @@
// LANGUAGE_VERSION: 1.2
// FILE: lateinit.kt
private lateinit var s: String
@@ -1,3 +1,5 @@
// LANGUAGE_VERSION: 1.2
lateinit var ok: String
fun box(): String {
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
@@ -1,3 +1,4 @@
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS, NATIVE
@@ -19,7 +19,7 @@ public abstract class A<T: Any, V: String?>(<!INAPPLICABLE_LATEINIT_MODIFIER!>la
private set
fun a() {
lateinit var <!UNUSED_VARIABLE!>a<!>: String
<!UNSUPPORTED_FEATURE!>lateinit<!> var <!UNUSED_VARIABLE!>a<!>: String
}
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var e1: V
@@ -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!>lateinit<!> val topLevel: String
lateinit var topLevelMutable: String
<!INAPPLICABLE_LATEINIT_MODIFIER, UNSUPPORTED_FEATURE!>lateinit<!> val topLevel: String
<!UNSUPPORTED_FEATURE!>lateinit<!> var topLevelMutable: String
public interface Intf {
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var str: String
@@ -1,3 +1,5 @@
// !LANGUAGE: +LateinitTopLevelProperties
object Delegate {
operator fun getValue(instance: Any?, property: Any) : String = ""
operator fun setValue(instance: Any?, property: Any, value: String) {}
@@ -1,4 +1,5 @@
// !DIAGNOSTICS: -UNUSED_VALUE -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE
// !LANGUAGE: +LateinitLocalVariables
import kotlin.reflect.KProperty
@@ -1,3 +1,5 @@
// !LANGUAGE: +LateinitLocalVariables
fun test() {
lateinit var s: String
s = ""
@@ -1,3 +1,5 @@
// !LANGUAGE: +LateinitLocalVariables
fun test1() {
lateinit var s: String
s.length