From 71f62f872f72c716c6630d645c3a0065d5ba1fe0 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Tue, 21 Feb 2012 23:54:16 +0400 Subject: [PATCH] fix stdlib compilation after javabean refactoring --- .../jet/codegen/ImplementationBodyCodegen.java | 12 +++++++++--- .../jet/lang/descriptors/PropertyDescriptor.java | 13 +++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index fbf88e07bcf..f485711eb6b 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -646,12 +646,18 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { for (Pair needDelegates : getTraitImplementations(descriptor)) { CallableMemberDescriptor callableDescriptor = needDelegates.first; - FunctionDescriptor fun = (FunctionDescriptor) needDelegates.second; - generateDelegationToTraitImpl(codegen, fun); + if (needDelegates.second instanceof NamedFunctionDescriptor) { + generateDelegationToTraitImpl(codegen, (FunctionDescriptor) needDelegates.second); + } else if (needDelegates.second instanceof PropertyDescriptor) { + PropertyDescriptor property = (PropertyDescriptor) needDelegates.second; + for (PropertyAccessorDescriptor accessor : property.getAccessors()) { + generateDelegationToTraitImpl(codegen, accessor); + } + } } } - private void generateDelegationToTraitImpl(ExpressionCodegen codegen, FunctionDescriptor fun) { + private void generateDelegationToTraitImpl(ExpressionCodegen codegen, @NotNull FunctionDescriptor fun) { DeclarationDescriptor containingDeclaration = fun.getContainingDeclaration(); if(containingDeclaration instanceof ClassDescriptor) { ClassDescriptor declaration = (ClassDescriptor) containingDeclaration; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java index 0d6d10c3edc..11bf26ae297 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java @@ -27,6 +27,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor; import org.jetbrains.jet.lang.resolve.scopes.receivers.TransientReceiver; import org.jetbrains.jet.lang.types.*; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; @@ -184,6 +185,18 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab return setter; } + @NotNull + public List getAccessors() { + List r = Lists.newArrayListWithCapacity(2); + if (getter != null) { + r.add(getter); + } + if (setter != null) { + r.add(setter); + } + return r; + } + @Override public PropertyDescriptor substitute(TypeSubstitutor originalSubstitutor) { if (originalSubstitutor.isEmpty()) {