diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt index d5c09e06b57..2e95f51a5ee 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVararg.txt @@ -4,7 +4,7 @@ public interface InheritNotVararg { public interface Sub : test.InheritNotVararg.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ p0: (kotlin.Array?..kotlin.Array?)): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ p0: kotlin.Array<(out) kotlin.String!>?): kotlin.Unit } public interface Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt index dc659f6a6ad..a8db63ba808 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargInteger.txt @@ -4,7 +4,7 @@ public interface InheritNotVarargInteger { public interface Sub : test.InheritNotVarargInteger.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ p0: (kotlin.Array?..kotlin.Array?)): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ p0: kotlin.Array<(out) kotlin.Int!>?): kotlin.Unit } public interface Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt index fc338970c32..aafe1541a83 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritNotVarargNotNull.txt @@ -4,7 +4,7 @@ public interface InheritNotVarargNotNull { public interface Sub : test.InheritNotVarargNotNull.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ p: (kotlin.Array?..kotlin.Array?)): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ p: kotlin.Array<(out) kotlin.String!>?): kotlin.Unit } public interface Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt index c020a7d2089..6939cfb447f 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVararg.txt @@ -4,7 +4,7 @@ public interface InheritVararg { public interface Sub : test.InheritVararg.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.String! /*kotlin.Array<(out) kotlin.String!>!*/): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.String! /*kotlin.Array<(out) kotlin.String!>*/): kotlin.Unit } public interface Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt index 85b925cd3ad..1751f272446 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargInteger.txt @@ -4,7 +4,7 @@ public interface InheritVarargInteger { public interface Sub : test.InheritVarargInteger.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.Int! /*kotlin.Array<(out) kotlin.Int!>!*/): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ vararg p0: kotlin.Int! /*kotlin.Array<(out) kotlin.Int!>*/): kotlin.Unit } public interface Super { diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt index ec47d07815c..ed8a0965ecb 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/parameter/InheritVarargNotNull.txt @@ -4,7 +4,7 @@ public interface InheritVarargNotNull { public interface Sub : test.InheritVarargNotNull.Super { public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit - public abstract override /*1*/ fun foo(/*0*/ vararg p: kotlin.String! /*kotlin.Array<(out) kotlin.String!>!*/): kotlin.Unit + public abstract override /*1*/ fun foo(/*0*/ vararg p: kotlin.String! /*kotlin.Array<(out) kotlin.String!>*/): kotlin.Unit } public interface Super { diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 6678fa46a11..0c0d18d43b3 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -870,8 +870,13 @@ internal class DescriptorRendererImpl( private fun replacePrefixes(lowerRendered: String, lowerPrefix: String, upperRendered: String, upperPrefix: String, foldedPrefix: String): String? { if (lowerRendered.startsWith(lowerPrefix) && upperRendered.startsWith(upperPrefix)) { val lowerWithoutPrefix = lowerRendered.substring(lowerPrefix.length()) - if (differsOnlyInNullability(lowerWithoutPrefix, upperRendered.substring(upperPrefix.length()))) { - return foldedPrefix + lowerWithoutPrefix + "!" + val upperWithoutPrefix = upperRendered.substring(upperPrefix.length()) + val flexibleCollectionName = foldedPrefix + lowerWithoutPrefix + + if (lowerWithoutPrefix == upperWithoutPrefix) return flexibleCollectionName + + if (differsOnlyInNullability(lowerWithoutPrefix, upperWithoutPrefix)) { + return flexibleCollectionName + "!" } } return null