5d0760c685
There is a `gradle-api-impldep.jar` created by Gradle which contains our nullability annotations, but relocated in the `org.gradle.internal.impldep` package In the deserialization process we use a `HAS_ANNOTATIONS` flag, and if it is present on the declaration, we do not try to build annotations for it, even when they are actually present and even when they are relocated (see usages of Flags.HAS_ANNOTATIONS in org.jetbrains.kotlin.serialization.deserialization.MemberDeserializer) In the stubs builder we also use this HAS_ANNOTATIONS flag, but we did not use it for the value parameters. This commit fixes that - now, if the `org.jetbrains.annotations` packages are relocated, it should not cause `Stub Mismatch Error` for the value parameters Lets consider two possible cases: 1. If the value parameter has a user-defined annotation, it will be marked as having annotations (HAS_ANNOTATIONS == true), and both stubs and deserialized descriptors will have to use all available annotations (even a relocated ones) 2. If, for example, the value parameter is of non-nullable type, it will have a `@NotNull` annotation on it, but will be marked as having no annotations at all (HAS_ANNOTATIONS == false), since `NotNull` is considered as auxiliary by the compiler. Because of the flag, both stubs and descriptors will ignore all present annotations (even if they were relocated) In the both cases, the stubs and the descriptors will completely match ^KT-44756 Fixed See IDEA-262971 about fixing the Gradle jar and the details N.B. This does not fixes the cases when `kotlin.Metadata` and similar annotations are relocated (e.g. KT-25709)