diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt index c77ba13ea1e..52411131a4d 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt @@ -93,7 +93,8 @@ abstract class SymbolLightClassForClassLike prote } } - override fun hasTypeParameters(): Boolean = hasTypeParameters(ktModule, classOrObjectDeclaration, classOrObjectSymbolPointer) + override fun hasTypeParameters(): Boolean = + hasTypeParameters(ktModule, classOrObjectDeclaration, classOrObjectSymbolPointer) override fun getTypeParameterList(): PsiTypeParameterList? = _typeParameterList diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt index 039f34d9828..1c02450cd98 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt @@ -122,7 +122,9 @@ internal class SymbolLightAccessorMethod private constructor( } } - override fun hasTypeParameters(): Boolean = hasTypeParameters(ktModule, containingPropertyDeclaration, containingPropertySymbolPointer) + override fun hasTypeParameters(): Boolean = + hasTypeParameters(ktModule, containingPropertyDeclaration, containingPropertySymbolPointer) + || containingClass.isDefaultImplsForInterfaceWithTypeParameters override fun getTypeParameterList(): PsiTypeParameterList? = _typeParameterList override fun getTypeParameters(): Array = _typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAnnotationsMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAnnotationsMethod.kt index fb0fd4b7e8e..1db3b6b9c0b 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAnnotationsMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAnnotationsMethod.kt @@ -142,7 +142,8 @@ internal class SymbolLightAnnotationsMethod private constructor( } } - private fun propertyHasTypeParameters(): Boolean = hasTypeParameters(ktModule, containingPropertyDeclaration, containingPropertySymbolPointer) + private fun propertyHasTypeParameters(): Boolean = + hasTypeParameters(ktModule, containingPropertyDeclaration, containingPropertySymbolPointer) private val _parametersList by lazyPub { SymbolLightParameterList( diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt index 9efbbaed4dc..18a8050c2bd 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt @@ -70,7 +70,9 @@ internal class SymbolLightSimpleMethod( } } - override fun hasTypeParameters(): Boolean = hasTypeParameters(ktModule, functionDeclaration, functionSymbolPointer) + override fun hasTypeParameters(): Boolean = + hasTypeParameters(ktModule, functionDeclaration, functionSymbolPointer) + || containingClass.isDefaultImplsForInterfaceWithTypeParameters override fun getTypeParameterList(): PsiTypeParameterList? = _typeParameterList override fun getTypeParameters(): Array = _typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt index f6cac5fc88b..19c740a6f3b 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt @@ -62,7 +62,9 @@ internal class SymbolLightTypeParameter private constructor( override val givenAnnotations: List get() = invalidAccess() - override fun copy(): PsiElement = SymbolLightTypeParameter( + override fun copy(): PsiElement = copyTo(parent) + + internal fun copyTo(parent: SymbolLightTypeParameterList): SymbolLightTypeParameter = SymbolLightTypeParameter( parent, index, typeParameterSymbolPointer, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt index 291897df1ca..cb3c778a2bb 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt @@ -13,8 +13,10 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.light.classes.symbol.* import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo import org.jetbrains.kotlin.light.classes.symbol.compareSymbolPointers +import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase import org.jetbrains.kotlin.light.classes.symbol.toArrayIfNotEmptyOrDefault import org.jetbrains.kotlin.light.classes.symbol.withSymbol import org.jetbrains.kotlin.psi.KtTypeParameterListOwner @@ -42,11 +44,18 @@ internal class SymbolLightTypeParameterList( private val _typeParameters: Collection by lazyPub { symbolWithTypeParameterPointer.withSymbol(ktModule) { - it.typeParameters.mapIndexed { index, parameter -> + val parentInterface = + (owner as? SymbolLightMethodBase)?.containingClass?.interfaceIfDefaultImpls + + val fromInterface = parentInterface?.typeParameters?.mapNotNull { + (it as? SymbolLightTypeParameter)?.copyTo(this@SymbolLightTypeParameterList) + }.orEmpty() + + fromInterface + it.typeParameters.mapIndexed { index, parameter -> SymbolLightTypeParameter( ktAnalysisSession = this, parent = this@SymbolLightTypeParameterList, - index = index, + index = fromInterface.size + index, typeParameterSymbol = parameter, ) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt index 16bbaa3f39d..db675a2dd23 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt @@ -31,6 +31,9 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.light.classes.symbol.annotations.* +import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase +import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForInterface +import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForInterfaceDefaultImpls import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.KtTypeParameterListOwner @@ -287,6 +290,12 @@ internal fun hasTypeParameters( it.typeParameters.isNotEmpty() } +internal val SymbolLightClassBase.interfaceIfDefaultImpls: SymbolLightClassForInterface? + get() = (this as? SymbolLightClassForInterfaceDefaultImpls)?.containingClass + +internal val SymbolLightClassBase.isDefaultImplsForInterfaceWithTypeParameters: Boolean + get() = interfaceIfDefaultImpls?.hasTypeParameters() ?: false + internal fun KtSymbolPointer<*>.isValid(ktModule: KtModule): Boolean = analyzeForLightClasses(ktModule) { restoreSymbol() != null } diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java index 73103eb50c1..a6688646331 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByFqNameForLibraryTestGenerated.java @@ -102,6 +102,12 @@ public class SymbolLightClassesByFqNameForLibraryTestGenerated extends AbstractS runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @Test + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByFqNameForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByFqNameForLibraryTestGenerated.java index 20f5839d573..9bd54a97011 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByFqNameForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByFqNameForLibraryTestGenerated.java @@ -102,6 +102,12 @@ public class SymbolLightClassesEqualityByFqNameForLibraryTestGenerated extends A runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @Test + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByFqNameForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByFqNameForLibraryTestGenerated.java index 4880179c3c8..6ebc322f9fd 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByFqNameForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByFqNameForLibraryTestGenerated.java @@ -102,6 +102,12 @@ public class SymbolLightClassesParentingByFqNameForLibraryTestGenerated extends runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @Test + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java index 69155a583b1..dae57fc2f02 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java @@ -102,6 +102,12 @@ public class SymbolLightClassesByFqNameForSourceTestGenerated extends AbstractSy runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @Test + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java index bd2cf3caf46..8c4bf2b9315 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java @@ -102,6 +102,12 @@ public class SymbolLightClassesEqualityByFqNameForSourceTestGenerated extends Ab runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @Test + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java index 32072fea5cc..7cb584b60ef 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java @@ -102,6 +102,12 @@ public class SymbolLightClassesParentingByFqNameForSourceTestGenerated extends A runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @Test + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.descriptors.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.descriptors.java new file mode 100644 index 00000000000..74fc9e1ae2b --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.descriptors.java @@ -0,0 +1,11 @@ +public abstract interface Foo /* Foo*/ { + public abstract void foo(X, Y, Z);// foo(X, Y, Z) + + public abstract int getX();// getX() + + public static final class DefaultImpls /* Foo.DefaultImpls*/ { + public static void foo(@org.jetbrains.annotations.NotNull() Foo, X, Y, Z);// foo(Foo, X, Y, Z) + + public static int getX(@org.jetbrains.annotations.NotNull() Foo);// getX(Foo) + } +} \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.java new file mode 100644 index 00000000000..cb27800f03c --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.java @@ -0,0 +1,11 @@ +public abstract interface Foo /* Foo*/ { + public abstract void foo(X, Y, Z);// foo(X, Y, Z) + + public abstract int getX();// getX() + + public static final class DefaultImpls /* Foo.DefaultImpls*/ { + public static void foo(@org.jetbrains.annotations.NotNull() Foo, X, Y, Z);// foo(Foo, X, Y, Z) + + public static int getX(@org.jetbrains.annotations.NotNull() Foo);// getX(Foo) + } +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt b/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt new file mode 100644 index 00000000000..5242c030361 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt @@ -0,0 +1,6 @@ +// Foo +interface Foo { + fun foo(x: X, y: Y, z: Z) {} + + val x: Int get() = 0 +} \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ExtendingInterfaceWithDefaultImpls.fir.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ExtendingInterfaceWithDefaultImpls.fir.java index 6043df98a49..77133bb3f13 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/ExtendingInterfaceWithDefaultImpls.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ExtendingInterfaceWithDefaultImpls.fir.java @@ -19,10 +19,10 @@ public abstract interface C /* p.C*/ extends p.B { public static void getProp3$annotations();// getProp3$annotations() @org.jetbrains.annotations.NotNull() - public static java.lang.String c(@org.jetbrains.annotations.NotNull() p.C);// c(p.C) + public static java.lang.String c(@org.jetbrains.annotations.NotNull() p.C);// c(p.C) - public static int getProp3(@org.jetbrains.annotations.NotNull() p.C);// getProp3(p.C) + public static int getProp3(@org.jetbrains.annotations.NotNull() p.C);// getProp3(p.C) - public static void setProp3(@org.jetbrains.annotations.NotNull() p.C, int);// setProp3(p.C, int) + public static void setProp3(@org.jetbrains.annotations.NotNull() p.C, int);// setProp3(p.C, int) } } diff --git a/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java index 676926af0af..b06355ee9fd 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java @@ -94,6 +94,11 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DataClassWithCustomImplementedMembers.kt"); } + @TestMetadata("DefaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DefaultImplsWithTypeParameters.kt"); + } + @TestMetadata("DelegatedNested.kt") public void testDelegatedNested() throws Exception { runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/DelegatedNested.kt"); diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.kt b/plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.kt new file mode 100644 index 00000000000..0a66893d85b --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.kt @@ -0,0 +1,5 @@ +interface Foo { + fun foo(x: X, y: Y, z: Z) {} + + val x: Int get() = 0 +} \ No newline at end of file diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.txt b/plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.txt new file mode 100644 index 00000000000..94ceebee6d3 --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.txt @@ -0,0 +1,24 @@ +@kotlin.Metadata() +public abstract interface Foo { + + public abstract void foo(X x, Y y, Z z); + + public abstract int getX(); + + @kotlin.Metadata() + public static final class DefaultImpls { + + public DefaultImpls() { + super(); + } + + public static void foo(@org.jetbrains.annotations.NotNull() + Foo $this, X x, Y y, Z z) { + } + + public static int getX(@org.jetbrains.annotations.NotNull() + Foo $this) { + return 0; + } + } +} 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 52855bb194b..1fd6df98dbc 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 @@ -127,6 +127,12 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi runTest("plugins/kapt3/kapt3-compiler/testData/converter/defaultImpls.kt"); } + @Test + @TestMetadata("defaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("defaultPackage.kt") public void testDefaultPackage() 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 72262727629..90add1aafaf 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 @@ -127,6 +127,12 @@ public class IrClassFileToSourceStubConverterTestGenerated extends AbstractIrCla runTest("plugins/kapt3/kapt3-compiler/testData/converter/defaultImpls.kt"); } + @Test + @TestMetadata("defaultImplsWithTypeParameters.kt") + public void testDefaultImplsWithTypeParameters() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/defaultImplsWithTypeParameters.kt"); + } + @Test @TestMetadata("defaultPackage.kt") public void testDefaultPackage() throws Exception {