Gleb Minaev
05/19/2025, 4:22 PMGleb Minaev
05/19/2025, 4:24 PM// SUPPRESS_WARNINGS: PRE_RELEASE_CLASS
import dev.lounres.kone.suppliedTypes.*
interface Foo<@Supplied T>
interface Bar<@Supplied U> : Foo<Map<out U, *>>
while the following test does not.
// SUPPRESS_WARNINGS: PRE_RELEASE_CLASS
// MODULE: foo
import dev.lounres.kone.suppliedTypes.*
interface Foo<@Supplied T>
// MODULE: bar(foo)
import dev.lounres.kone.suppliedTypes.*
interface Bar<@Supplied U> : Foo<Map<out U, *>>
Javier
05/19/2025, 4:29 PMGleb Minaev
05/19/2025, 4:30 PMPavel Kunyavskiy [JB]
05/19/2025, 4:30 PMregisterFunctionAsMetadataVisible
and similar methods from metadataDeclarationRegistrar
. Note, that they are very limited in usages (e.g. don't work for top-levels).Gleb Minaev
05/19/2025, 4:38 PM@Supplied
, which should not be accessible for user directly (instead, one can call suppliedTypeOf<...>()
to get a value constructed using the value of the property).
I'll look into metadataDeclarationRegistrar
at first. Thank you!Pavel Kunyavskiy [JB]
05/19/2025, 4:41 PM@Deprecated(level=HIDDEN)
, than compiler would see it, but users wouldn't.Gleb Minaev
05/19/2025, 4:53 PMBar
interface IR I tried to dump the Foo
interface IR. The dump (with origin IR_EXTERNAL_DECLARATION_STUB
) does not contain the property I created when I modified the Foo interface IR. But I would like to override the property in Bar
during compilation of the bar
module. It means that compiler have to be able to see the generated property when it compiles dependent module. But I would like to hide the property from user.