fix stdlib compilation after javabean refactoring

This commit is contained in:
Stepan Koltsov
2012-02-21 23:54:16 +04:00
parent a0cc63cd08
commit 71f62f872f
2 changed files with 22 additions and 3 deletions
@@ -646,12 +646,18 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
for (Pair<CallableMemberDescriptor, CallableMemberDescriptor> 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;
@@ -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<PropertyAccessorDescriptor> getAccessors() {
List<PropertyAccessorDescriptor> 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()) {