Report error on state in multi-file class with -Xmultifile-parts-inherit
Simplify MultifileClassPartCodegen, remove related tests and change some tests to use const val instead of val because backing fields for const properties are stored in the facade, not parts #KT-23701 Fixed
This commit is contained in:
+1
-1
@@ -13,4 +13,4 @@ fun box(): String = ::OK.get()
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val OK = run { "OK" }
|
||||
const val OK = "OK"
|
||||
+1
-1
@@ -13,7 +13,7 @@ fun box(): String = okInline()
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
internal val ok = run { "OK" }
|
||||
internal const val ok = "OK"
|
||||
|
||||
internal inline fun okInline() =
|
||||
::ok.get()
|
||||
+1
-1
@@ -13,7 +13,7 @@ fun box(): String = OK.okRef.get()
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
private val ok = run { "OK" }
|
||||
private const val ok = "OK"
|
||||
|
||||
object OK {
|
||||
val okRef = ::ok
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = OK
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val O = run { "O" }
|
||||
|
||||
// FILE: part2.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
const val K = "K"
|
||||
|
||||
// FILE: part3.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val OK: String = run { O + K }
|
||||
|
||||
// FILE: irrelevantPart.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val X1: Nothing =
|
||||
throw AssertionError("X1 should not be initialized")
|
||||
|
||||
// FILE: reallyIrrelevantPart.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val X2: Nothing =
|
||||
throw AssertionError("X2 should not be initialized")
|
||||
@@ -1,16 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = OK
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val OK: String by lazy { "OK" }
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = ok()
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
private val OK = run { "OK" }
|
||||
|
||||
fun ok() = OK
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = OK
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
public val OK = run { "OK" }
|
||||
@@ -1,30 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = ok()
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
private val overlapping = run { "oops #1" }
|
||||
|
||||
// FILE: part2.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
private val overlapping = run { "OK" }
|
||||
|
||||
fun ok() = overlapping
|
||||
|
||||
// FILE: part3.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
private val overlapping = run { "oops #2" }
|
||||
Vendored
-30
@@ -1,30 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = J.ok()
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MC") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val O = run { "O" }
|
||||
const val K = "K"
|
||||
|
||||
inline fun ok(): String {
|
||||
return O + K
|
||||
}
|
||||
|
||||
// FILE: J.java
|
||||
import a.MC;
|
||||
|
||||
public class J {
|
||||
public static String ok() {
|
||||
return MC.ok();
|
||||
}
|
||||
}
|
||||
Vendored
-22
@@ -1,22 +0,0 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = ok {}
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
val O = run { "O" }
|
||||
const val K = "K"
|
||||
|
||||
inline fun ok(block: () -> Unit): String {
|
||||
block()
|
||||
return O + K
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
// FILE: box.kt
|
||||
|
||||
import a.*
|
||||
|
||||
fun box(): String = OK().ok
|
||||
|
||||
// FILE: part1.kt
|
||||
@file:[JvmName("MultifileClass") JvmMultifileClass]
|
||||
package a
|
||||
|
||||
private val reallyOk = run { "OK" }
|
||||
|
||||
class OK() {
|
||||
val ok = reallyOk
|
||||
}
|
||||
Reference in New Issue
Block a user