diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java index b1f08a84346..21a03210b73 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java @@ -658,7 +658,9 @@ public class KotlinTypeMapper { baseMethodDescriptor = findBaseDeclaration(functionDescriptor).getOriginal(); ClassDescriptor ownerForDefault = (ClassDescriptor) baseMethodDescriptor.getContainingDeclaration(); - ownerForDefaultImpl = isJvmInterface(ownerForDefault) ? mapDefaultImpls(ownerForDefault) : mapClass(ownerForDefault); + ownerForDefaultImpl = + isJvmInterface(ownerForDefault) && (state == null || !isJvm8Interface(ownerForDefault, state)) ? + mapDefaultImpls(ownerForDefault) : mapClass(ownerForDefault); if (isInterface && (superCall || descriptor.getVisibility() == Visibilities.PRIVATE || isAccessor(descriptor))) { thisClass = mapClass(currentOwner); diff --git a/compiler/testData/codegen/java8/box/jvm8/defaultArgs.kt b/compiler/testData/codegen/java8/box/jvm8/defaultArgs.kt new file mode 100644 index 00000000000..7ece71ad052 --- /dev/null +++ b/compiler/testData/codegen/java8/box/jvm8/defaultArgs.kt @@ -0,0 +1,13 @@ +// JVM_TARGET: 1.8 + +interface Z { + fun test(s: String = "OK"): String { + return s + } +} + +class Test: Z + +fun box(): String { + return Test().test() +} \ No newline at end of file diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/codegen/BlackBoxWithJava8CodegenTestGenerated.java b/compiler/tests-java8/tests/org/jetbrains/kotlin/codegen/BlackBoxWithJava8CodegenTestGenerated.java index e97bde12f40..086b3bffb32 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/codegen/BlackBoxWithJava8CodegenTestGenerated.java +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/codegen/BlackBoxWithJava8CodegenTestGenerated.java @@ -139,6 +139,12 @@ public class BlackBoxWithJava8CodegenTestGenerated extends AbstractBlackBoxCodeg doTest(fileName); } + @TestMetadata("defaultArgs.kt") + public void testDefaultArgs() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/jvm8/defaultArgs.kt"); + doTest(fileName); + } + @TestMetadata("diamond.kt") public void testDiamond() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/jvm8/diamond.kt");