Evgeniy Zhelenskiy
09/21/2026, 12:18 PM@WillBecomeValue annotation.
TL;DR: it marks reference classes (like Pair, Uuid) that will eventually become `value class`es. Once marked, the compiler warns on identity-sensitive usages (===, synchronized, identityHashCode) — so users can fix their code before the class actually converts and those usages become errors. Basically a Kotlin analog of Java's @jdk.internal.ValueBased (JEP 390).
Example:
@WillBecomeValue
data class Pair<out A, out B>(val first: A, val second: B)
fun check(p: Pair<String, String>) {
p === p // Warning: identity-sensitive operation on a class annotated with @WillBecomeValue
}