Inline function cannot access non-public-API: @PublishedApi vs @Suppress vs @JvmSynthetic

@PublishedApi internal is the intended way of exposing non-public API for use 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 @PublishedApi based on suppressing an error and therefore isn’t recommended. With the introduction of @PublishedApi this suppression is going to be cleaned from the standard library.

@JvmSynthetic combined with @PublishedApi is an interesting approach, however it can cause some problems while debugging, though I’m not sure.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)