LocalVariableDescriptor.withAccessors renamed to isDelegated, added getter

This commit is contained in:
Mikhael Bogdanov
2016-05-05 13:48:15 +03:00
parent 0e071b4748
commit 6ae511b253
3 changed files with 12 additions and 8 deletions
@@ -1628,7 +1628,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
} }
private static boolean isDelegatedLocalVariable(@NotNull DeclarationDescriptor descriptor) { private static boolean isDelegatedLocalVariable(@NotNull DeclarationDescriptor descriptor) {
return descriptor instanceof LocalVariableDescriptor && ((VariableDescriptorWithAccessors) descriptor).getGetter() != null; return descriptor instanceof LocalVariableDescriptor && ((LocalVariableDescriptor) descriptor).isDelegated();
} }
private static boolean isSharedVarType(@NotNull Type type) { private static boolean isSharedVarType(@NotNull Type type) {
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter;
import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter; import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor; import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor;
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
import org.jetbrains.kotlin.fileClasses.FileClasses; import org.jetbrains.kotlin.fileClasses.FileClasses;
import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo;
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil;
@@ -1369,9 +1370,8 @@ public class KotlinTypeMapper {
return StackValue.sharedTypeForType(mapType(receiverParameter.getType())); return StackValue.sharedTypeForType(mapType(receiverParameter.getType()));
} }
if (descriptor instanceof VariableDescriptorWithAccessors) { if (descriptor instanceof LocalVariableDescriptor && ((LocalVariableDescriptor) descriptor).isDelegated()) {
VariableDescriptorWithAccessors withAccessors = (VariableDescriptorWithAccessors) descriptor; return null;
if (withAccessors.getGetter() != null || withAccessors.getSetter() != null) return null;
} }
if (descriptor instanceof VariableDescriptor && isVarCapturedInClosure(bindingContext, descriptor)) { if (descriptor instanceof VariableDescriptor && isVarCapturedInClosure(bindingContext, descriptor)) {
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.types.KotlinType;
import org.jetbrains.kotlin.types.TypeSubstitutor; import org.jetbrains.kotlin.types.TypeSubstitutor;
public class LocalVariableDescriptor extends VariableDescriptorWithInitializerImpl implements VariableDescriptorWithAccessors { public class LocalVariableDescriptor extends VariableDescriptorWithInitializerImpl implements VariableDescriptorWithAccessors {
private final boolean withAccessors; private final boolean isDelegated;
private VariableAccessorDescriptor getter; private VariableAccessorDescriptor getter;
private VariableAccessorDescriptor setter; private VariableAccessorDescriptor setter;
@@ -35,17 +35,17 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm
@NotNull Name name, @NotNull Name name,
@Nullable KotlinType type, @Nullable KotlinType type,
boolean mutable, boolean mutable,
boolean withAccessors, boolean isDelegated,
@NotNull SourceElement source @NotNull SourceElement source
) { ) {
super(containingDeclaration, annotations, name, type, mutable, source); super(containingDeclaration, annotations, name, type, mutable, source);
this.withAccessors = withAccessors; this.isDelegated = isDelegated;
} }
@Override @Override
public void setOutType(KotlinType outType) { public void setOutType(KotlinType outType) {
super.setOutType(outType); super.setOutType(outType);
if (withAccessors) { if (isDelegated) {
this.getter = new LocalVariableAccessorDescriptor.Getter(this); this.getter = new LocalVariableAccessorDescriptor.Getter(this);
if (isVar()) { if (isVar()) {
this.setter = new LocalVariableAccessorDescriptor.Setter(this); this.setter = new LocalVariableAccessorDescriptor.Setter(this);
@@ -82,4 +82,8 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm
public VariableAccessorDescriptor getSetter() { public VariableAccessorDescriptor getSetter() {
return setter; return setter;
} }
public boolean isDelegated() {
return isDelegated;
}
} }