diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index ed2ccb6502c..02c480dd857 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -491,6 +491,11 @@ public class JetTypeMapper { return null; final DeclarationDescriptor functionParent = functionDescriptor.getOriginal().getContainingDeclaration(); + + while(functionDescriptor.getKind()==CallableMemberDescriptor.Kind.FAKE_OVERRIDE) { + functionDescriptor = functionDescriptor.getOverriddenDescriptors().iterator().next(); + } + JvmMethodSignature descriptor = mapSignature(functionDescriptor.getOriginal(), true, kind); String owner; String ownerForDefaultImpl; diff --git a/compiler/testData/codegen/regressions/kt1600.kt b/compiler/testData/codegen/regressions/kt1600.kt new file mode 100644 index 00000000000..e9f111a98b3 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt1600.kt @@ -0,0 +1,8 @@ +abstract class Foo { + fun hello(id: T) = "O$id" +} + +class Bar: Foo() { +} + +fun box() = Bar().hello("K") diff --git a/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java index 52f97ed5942..a051fa517e5 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java @@ -75,4 +75,8 @@ public class ObjectGenTest extends CodegenTestCase { public void testKt1186() throws Exception { blackBoxFile("regressions/kt1186.kt"); } + + public void testKt1600() throws Exception { + blackBoxFile("regressions/kt1600.kt"); + } }