diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.kt b/plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.kt new file mode 100644 index 00000000000..b21d5e1d93b --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.kt @@ -0,0 +1,9 @@ +interface I1 + +interface I2 + +interface I3 + +interface I4 + +class C where T1 : I1, T1 : I2, T2: I3, T2: I4 diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.txt b/plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.txt new file mode 100644 index 00000000000..1050bfe32ae --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.txt @@ -0,0 +1,68 @@ +/** + * public final class C : kotlin/Any { + * + * // signature: ()V + * public constructor() + * + * // module name: main + * } + */ +@kotlin.Metadata() +public final class C { + + public C() { + super(); + } +} + +//////////////////// + + +/** + * public abstract interface I1 : kotlin/Any { + * + * // module name: main + * } + */ +@kotlin.Metadata() +public abstract interface I1 { +} + +//////////////////// + + +/** + * public abstract interface I2 : kotlin/Any { + * + * // module name: main + * } + */ +@kotlin.Metadata() +public abstract interface I2 { +} + +//////////////////// + + +/** + * public abstract interface I3 : kotlin/Any { + * + * // module name: main + * } + */ +@kotlin.Metadata() +public abstract interface I3 { +} + +//////////////////// + + +/** + * public abstract interface I4 : kotlin/Any { + * + * // module name: main + * } + */ +@kotlin.Metadata() +public abstract interface I4 { +} diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java index 9057cfe2edd..c80309e8a67 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java @@ -571,6 +571,12 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi runTest("plugins/kapt3/kapt3-compiler/testData/converter/multifileClassDefaultPackage.kt"); } + @Test + @TestMetadata("multipleTypeConstraints.kt") + public void testMultipleTypeConstraints() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.kt"); + } + @Test @TestMetadata("nestedClasses.kt") public void testNestedClasses() throws Exception { diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java index 01e71cd0522..da2d13639ab 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java @@ -571,6 +571,12 @@ public class IrClassFileToSourceStubConverterTestGenerated extends AbstractIrCla runTest("plugins/kapt3/kapt3-compiler/testData/converter/multifileClassDefaultPackage.kt"); } + @Test + @TestMetadata("multipleTypeConstraints.kt") + public void testMultipleTypeConstraints() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.kt"); + } + @Test @TestMetadata("nestedClasses.kt") public void testNestedClasses() throws Exception { diff --git a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt index 6ae9b03c992..e09e5227c00 100644 --- a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt +++ b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/StubGenerator.kt @@ -437,7 +437,7 @@ private class StubGenerator( printWithNoIndent(param.name, " extends ") if (param.extendsListTypes.isNotEmpty()) { param.extendsListTypes.forEachIndexed { i, t -> - if (i > 0) printWithNoIndent(", ") + if (i > 0) printWithNoIndent(" & ") printType(t) } } else { diff --git a/plugins/kapt4/tests-gen/org/jetbrains/kotlin/kapt4/KotlinKapt4ContextTestGenerated.java b/plugins/kapt4/tests-gen/org/jetbrains/kotlin/kapt4/KotlinKapt4ContextTestGenerated.java index 97386effa4b..c50495bc077 100644 --- a/plugins/kapt4/tests-gen/org/jetbrains/kotlin/kapt4/KotlinKapt4ContextTestGenerated.java +++ b/plugins/kapt4/tests-gen/org/jetbrains/kotlin/kapt4/KotlinKapt4ContextTestGenerated.java @@ -571,6 +571,12 @@ public class KotlinKapt4ContextTestGenerated extends AbstractKotlinKapt4ContextT runTest("plugins/kapt4/../kapt3/kapt3-compiler/testData/converter/multifileClassDefaultPackage.kt"); } + @Test + @TestMetadata("multipleTypeConstraints.kt") + public void testMultipleTypeConstraints() throws Exception { + runTest("plugins/kapt4/../kapt3/kapt3-compiler/testData/converter/multipleTypeConstraints.kt"); + } + @Test @TestMetadata("nestedClasses.kt") public void testNestedClasses() throws Exception {