Get rid of suppressions for "invisible_reference" and "invisible_member" #618
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.
For accessing internal declarations from "friend" modules (e.g. access
rib-base
internals fromrib-test
), we are currently suppressing compiler errors with@file:Suppress("invisible_reference", "invisible_member")
A better approach is to:
internal
opt-in annotation.public
build.gradle
.Because the new annotation is
internal
, it cannot be normally accessed from external modules. But Gradle can see it if it's part of the source set.Benefits:
invisible_reference
andinvisible_member
we gain access to all internal components from the other modules, and that's not ideal: we'd rather be explicit about what are the APIs that are visible for module friends, and what are truly internal for the module and should never be used even from module friends."invisible_reference"
and"invisible_member"
to directly access the friend-module API -- they require explicit Opt-In. They would need to suppress invisible members AND opt-in.