From 88bda0950407a9d47ee16125f478e14f00e5e43d Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Fri, 9 Dec 2011 12:27:50 +0200 Subject: [PATCH] $typeInfo field better be protected --- .../jetbrains/jet/codegen/ImplementationBodyCodegen.java | 2 +- compiler/testData/codegen/typeInfo/inheritance.jet | 9 +++++++++ .../tests/org/jetbrains/jet/codegen/TypeInfoTest.java | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/typeInfo/inheritance.jet diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 4f80d963954..e40e22d5a47 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -801,7 +801,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { JetType defaultType = descriptor.getDefaultType(); if(CodegenUtil.hasTypeInfoField(defaultType)) { if(!CodegenUtil.hasDerivedTypeInfoField(defaultType, true)) { - v.newField(myClass, Opcodes.ACC_PRIVATE, "$typeInfo", "Ljet/typeinfo/TypeInfo;", null, null); + v.newField(myClass, Opcodes.ACC_PROTECTED, "$typeInfo", "Ljet/typeinfo/TypeInfo;", null, null); MethodVisitor mv = v.newMethod(myClass, Opcodes.ACC_PUBLIC, "getTypeInfo", "()Ljet/typeinfo/TypeInfo;", null, null); InstructionAdapter iv = null; diff --git a/compiler/testData/codegen/typeInfo/inheritance.jet b/compiler/testData/codegen/typeInfo/inheritance.jet new file mode 100644 index 00000000000..225bda1f665 --- /dev/null +++ b/compiler/testData/codegen/typeInfo/inheritance.jet @@ -0,0 +1,9 @@ +open class A () { + fun plus(e: T) = B (e) +} + +class B (val e: T) : A() { + fun add() = B (e) +} + +fun box() = if( A().plus("239").add().e == "239" ) "OK" else "fail" \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/TypeInfoTest.java b/compiler/tests/org/jetbrains/jet/codegen/TypeInfoTest.java index 1ce4e56d3c8..85b9dae07d8 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/TypeInfoTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/TypeInfoTest.java @@ -142,5 +142,10 @@ public class TypeInfoTest extends CodegenTestCase { blackBoxFile("typeInfo/inner.jet"); // System.out.println(generateToText()); } + + public void testInheritance() throws Exception { + blackBoxFile("typeInfo/inheritance.jet"); + System.out.println(generateToText()); + } }