mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
INSTANCE field deprecated in companion object
Fix for KT-9692: Deadlock between <clinit> of a class (KtSimpleNameExpressionImpl) and <clinit> of its companion object #KT-9692 Fixed
This commit is contained in:
7
compiler/testData/codegen/boxWithJava/classCompanion/CompanionInitialization.java
vendored
Normal file
7
compiler/testData/codegen/boxWithJava/classCompanion/CompanionInitialization.java
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
public class CompanionInitialization {
|
||||
|
||||
public static Object getCompanion() {
|
||||
return ConcreteWithStatic.Companion;
|
||||
}
|
||||
|
||||
}
|
||||
20
compiler/testData/codegen/boxWithJava/classCompanion/CompanionInitialization.kt
vendored
Normal file
20
compiler/testData/codegen/boxWithJava/classCompanion/CompanionInitialization.kt
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
interface IStatic
|
||||
|
||||
open class Static(x: IStatic) {
|
||||
fun doSth() {
|
||||
}
|
||||
}
|
||||
|
||||
class ConcreteWithStatic : IStatic {
|
||||
companion object : Static(ConcreteWithStatic())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
ConcreteWithStatic.doSth()
|
||||
|
||||
val companion: Any? = CompanionInitialization.getCompanion()
|
||||
if (companion == null) return "fail 1"
|
||||
if (companion != ConcreteWithStatic) return "fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
7
compiler/testData/codegen/boxWithJava/interfaceCompanion/CompanionInitialization.java
vendored
Normal file
7
compiler/testData/codegen/boxWithJava/interfaceCompanion/CompanionInitialization.java
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
public class CompanionInitialization {
|
||||
|
||||
public static Object getCompanion() {
|
||||
return IStatic.Companion;
|
||||
}
|
||||
|
||||
}
|
||||
22
compiler/testData/codegen/boxWithJava/interfaceCompanion/CompanionInitialization.kt
vendored
Normal file
22
compiler/testData/codegen/boxWithJava/interfaceCompanion/CompanionInitialization.kt
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
open class Static(): IStatic {
|
||||
val p = IStatic::class.java.getDeclaredField("const").get(null)
|
||||
}
|
||||
|
||||
interface IStatic {
|
||||
fun doSth() {
|
||||
}
|
||||
|
||||
companion object : Static() {
|
||||
const val const = 1;
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
IStatic.doSth()
|
||||
|
||||
val companion: Any? = CompanionInitialization.getCompanion()
|
||||
if (companion == null) return "fail 1"
|
||||
if (companion != IStatic) return "fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user