Skip to content

Deprecate and hide @Nullable, @NonNull annotations to avoid name clashes with jspecify #134

@vlsi

Description

@vlsi

Currently, org.jetbrains.kotlin:kotlin-stdlib:2.2.21 depends on org.jetbrains:annotations, so it brings org.jetbrains.annotations.Nullable to IDE autocomplete.

The ecosystem moves towards https://jspecify.dev/, so it would be nice if you could deprecate and hide @Nullable and @NonNull annotations.

Deprecation is straightforward: @Deprecated + release announcement.
Hiding would probably involve adding ACC_SYNTHETIC modifier after the compilation. It would still keep the class in the bytecode, so the old libraries would still work fine in the runtime, while the new clients would need to move to a different nullability annotations.
An alternative option could be to rewrite @Nullable annotation in Kotlin and use @Deprecated(level = HIDDEN)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions