Description
As mentioned in #59, currently @internal
on a private static property makes it not configuration, but that annotation also means "this is not included in our public API and may change at any time"
To have configuration that isn't part of our public API, we have to have @internal
and @config
which cancel each other out. That is the only use case for @config
.
@internal
doesn't semantically mean "this isn't configuration", so using it to stop a property from being configuration is confusing. Many developers may not be aware that it's causing that side effect.
Because of all of this, we should deprecate the logic that makes @internal
stop being config, and replace it with a new @not-config
annotation. That does a few things:
- Makes it easy to tell (even for someone not familiar with the intimate details of this library) when a private static property is not config
- Allows us to use
@internal
for configuration without having to also add@config
- Simplifies the code (slightly)
Obviously for backwards compatibility the existing logic will have to sit along-side the new, to be removed in a future major release.
Acceptance Criteria
- Using
@internal
with@config
results in a deprecation warning - New
@not-config
annotation results infalse
returning fromPrivateStaticTransformer::isConfigProperty()
- There are clear comments in the code to ensure that in a future major release the
@internal
and@config
annotations are no longer handled inPrivateStaticTransformer