@PublishedApi internal
is the intended way of exposing non-public API for using in public inline functions.
That @PublishedApi internal
member becomes effectively public and its name doesn't get mangled (if you noticed the opposite, please file a bug).
@Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE")
is a band-aid workaround in the lack of @PublisedApi
based on suppressing an error and therefore isn't recommended. With the introduction of @PublishedApi
this suppression is going to be cleaned from stdlib.
@JvmSynthetic
combined with @PublishedApi
is an interesting approach, however it can cause some problems while debugging, though I'm not sure.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…