diff --git a/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java b/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java index 84ca0888be0..390053af263 100644 --- a/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/metadata/DebugProtoBuf.java @@ -2643,7 +2643,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ boolean hasArrayDimensionCount(); @@ -2657,7 +2659,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ int getArrayDimensionCount(); @@ -3220,7 +3224,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public boolean hasArrayDimensionCount() { @@ -3236,7 +3242,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public int getArrayDimensionCount() { @@ -4365,7 +4373,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public boolean hasArrayDimensionCount() { @@ -4381,7 +4391,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public int getArrayDimensionCount() { @@ -4397,7 +4409,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public Builder setArrayDimensionCount(int value) { @@ -4416,7 +4430,9 @@ public final class DebugProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public Builder clearArrayDimensionCount() { diff --git a/core/metadata/src/metadata.proto b/core/metadata/src/metadata.proto index 51efe11bf33..b51ea7f69fc 100644 --- a/core/metadata/src/metadata.proto +++ b/core/metadata/src/metadata.proto @@ -90,7 +90,9 @@ message Annotation { // - Array::class, if array_dimension_count = 1 // - Array>::class, if array_dimension_count = 2 // - etc. - // Other forms of array class literals are not supported by this format, see KT-26568 + // Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + // in class literals on JVM, we don't bother to do represent this in our format as well. + // So, for example, values `Array>::class` and `Array>?>::class` will be represented exactly the same here. optional int32 array_dimension_count = 11 [default = 0]; /* diff --git a/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java b/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java index efbeda72046..f9e5fa99b2f 100644 --- a/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java +++ b/core/metadata/src/org/jetbrains/kotlin/metadata/ProtoBuf.java @@ -2211,7 +2211,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ boolean hasArrayDimensionCount(); @@ -2225,7 +2227,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ int getArrayDimensionCount(); @@ -2749,7 +2753,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public boolean hasArrayDimensionCount() { @@ -2765,7 +2771,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public int getArrayDimensionCount() { @@ -3652,7 +3660,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public boolean hasArrayDimensionCount() { @@ -3668,7 +3678,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public int getArrayDimensionCount() { @@ -3684,7 +3696,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public Builder setArrayDimensionCount(int value) { @@ -3703,7 +3717,9 @@ public final class ProtoBuf { * - Array<String>::class, if array_dimension_count = 1 * - Array<Array<String>>::class, if array_dimension_count = 2 * - etc. - * Other forms of array class literals are not supported by this format, see KT-26568 + * Since it's very difficult to represent Kotlin-specific type aspects (nullability, type projections) of array arguments + * in class literals on JVM, we don't bother to do represent this in our format as well. + * So, for example, values `Array<Array<in B?>>::class` and `Array<out Array<B>>?>::class` will be represented exactly the same here. * */ public Builder clearArrayDimensionCount() {