c7435ba760
We are going to deprecate `WITH_RUNTIME` directive. The main reason behind this change is that `WITH_STDLIB` directive better describes its meaning, specifically it will add kotlin stdlib to test's classpath.
30 lines
667 B
Kotlin
Vendored
30 lines
667 B
Kotlin
Vendored
// FIR_IDENTICAL
|
|
// !DIAGNOSTICS: -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNCHECKED_CAST
|
|
// WITH_STDLIB
|
|
|
|
sealed interface Metric {}
|
|
|
|
class Counter: Metric
|
|
class Gauge<T>: Metric
|
|
|
|
fun <K> foo(y: List<K?>, x: Inv<in K?>, p: (Inv<K?>, K?) -> Unit) {}
|
|
fun <M> materialize(): M = null as M
|
|
|
|
class Inv<L>(var x: L)
|
|
|
|
fun <T : Metric?> register(name: String, metric: T): T? {
|
|
when (metric) {
|
|
is Counter -> {
|
|
return metric
|
|
}
|
|
is Gauge<*> -> {
|
|
foo(listOf(), Inv(metric)) { x, y ->
|
|
var a = y
|
|
a = materialize()
|
|
}
|
|
return metric
|
|
}
|
|
else -> return null
|
|
}
|
|
}
|