Fixed bug in fix for KT 3492: Bug in bytecode generation for labeled super call from inner class & Property generation refactoring

This commit is contained in:
Mikhael Bogdanov
2013-04-18 18:13:59 +04:00
parent fe4dd2f661
commit 82d7f07cb3
5 changed files with 34 additions and 4 deletions
@@ -1734,6 +1734,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
JvmClassName owner;
CallableMethod callableMethod = callableGetter != null ? callableGetter : callableSetter;
propertyDescriptor = unwrapFakeOverride(propertyDescriptor);
if (callableMethod == null) {
owner = typeMapper.getOwner(propertyDescriptor, contextKind(), isInsideModule);
}
@@ -1741,7 +1742,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
owner = callableMethod.getOwner();
}
return StackValue.property(propertyDescriptor, owner, asmType(unwrapFakeOverride(propertyDescriptor).getOriginal().getType()),
return StackValue.property(propertyDescriptor, owner, asmType(propertyDescriptor.getOriginal().getType()),
isStatic, callableGetter, callableSetter, state);
}
@@ -889,7 +889,7 @@ public abstract class StackValue {
}
else {
Method method = getter.getSignature().getAsmMethod();
v.visitMethodInsn(getter.getInvokeOpcode(), methodOwner.getInternalName(), method.getName(), method.getDescriptor());
v.visitMethodInsn(getter.getInvokeOpcode(), getter.getOwner().getInternalName(), method.getName(), method.getDescriptor());
}
coerceTo(type, v);
}
@@ -902,7 +902,7 @@ public abstract class StackValue {
this.type.getDescriptor()); }
else {
Method method = setter.getSignature().getAsmMethod();
v.visitMethodInsn(setter.getInvokeOpcode(), methodOwner.getInternalName(), method.getName(), method.getDescriptor());
v.visitMethodInsn(setter.getInvokeOpcode(), setter.getOwner().getInternalName(), method.getName(), method.getDescriptor());
}
}
}