[Byecode] Hide internal
Kotlin fields marked with @JvmField
.
#1004
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #954
Internal Kotlin fields that are marked with
@JvmField
are exposed aspublic
in the compiled bytecode so they can be consumed by Java.This is a bit of a conundrum because
internal
means "can't be consumed by other libraries" and@JvmField
means "make this consumable by other Java libraries". 🤷♂️This can cause issues for binding, as the type of those fields may be
internal
, and thus our binding process will not find the type.Let's honor the original
internal
visibility to produce consistent bindings. (kotlin-internal
can be overridden withgenerator
metadata if desired.)We need to examine the encoded Kotlin metadata to determine if the field should be marked as
kotlin-internal
the same way we do with methods and properties.