From 6ae511b253aa4441758e96c94892df613e8cfc2e Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 5 May 2016 13:48:15 +0300 Subject: [PATCH] LocalVariableDescriptor.withAccessors renamed to isDelegated, added getter --- .../jetbrains/kotlin/codegen/ExpressionCodegen.java | 2 +- .../kotlin/codegen/state/KotlinTypeMapper.java | 6 +++--- .../descriptors/impl/LocalVariableDescriptor.java | 12 ++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 79c71019877..89368036d83 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -1628,7 +1628,7 @@ public class ExpressionCodegen extends KtVisitor 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) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java index 759f2ef1c91..e54024be702 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java @@ -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)) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java index 90ce9cebe2b..9eadb924b9c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java @@ -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; + } }