LocalVariableDescriptor.withAccessors renamed to isDelegated, added getter
This commit is contained in:
@@ -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)) {
|
||||||
|
|||||||
+8
-4
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user