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) {
return descriptor instanceof LocalVariableDescriptor && ((VariableDescriptorWithAccessors) descriptor).getGetter() != null;
return descriptor instanceof LocalVariableDescriptor && ((LocalVariableDescriptor) descriptor).isDelegated();
}
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.descriptors.*;
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.JvmFileClassInfo;
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil;
@@ -1369,9 +1370,8 @@ public class KotlinTypeMapper {
return StackValue.sharedTypeForType(mapType(receiverParameter.getType()));
}
if (descriptor instanceof VariableDescriptorWithAccessors) {
VariableDescriptorWithAccessors withAccessors = (VariableDescriptorWithAccessors) descriptor;
if (withAccessors.getGetter() != null || withAccessors.getSetter() != null) return null;
if (descriptor instanceof LocalVariableDescriptor && ((LocalVariableDescriptor) descriptor).isDelegated()) {
return null;
}
if (descriptor instanceof VariableDescriptor && isVarCapturedInClosure(bindingContext, descriptor)) {
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.types.KotlinType;
import org.jetbrains.kotlin.types.TypeSubstitutor;
public class LocalVariableDescriptor extends VariableDescriptorWithInitializerImpl implements VariableDescriptorWithAccessors {
private final boolean withAccessors;
private final boolean isDelegated;
private VariableAccessorDescriptor getter;
private VariableAccessorDescriptor setter;
@@ -35,17 +35,17 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm
@NotNull Name name,
@Nullable KotlinType type,
boolean mutable,
boolean withAccessors,
boolean isDelegated,
@NotNull SourceElement source
) {
super(containingDeclaration, annotations, name, type, mutable, source);
this.withAccessors = withAccessors;
this.isDelegated = isDelegated;
}
@Override
public void setOutType(KotlinType outType) {
super.setOutType(outType);
if (withAccessors) {
if (isDelegated) {
this.getter = new LocalVariableAccessorDescriptor.Getter(this);
if (isVar()) {
this.setter = new LocalVariableAccessorDescriptor.Setter(this);
@@ -82,4 +82,8 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm
public VariableAccessorDescriptor getSetter() {
return setter;
}
public boolean isDelegated() {
return isDelegated;
}
}