Drop CodegenBinding#enclosingClassDescriptor()
This commit is contained in:
@@ -856,10 +856,13 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
"constructor: " + constructor.getValueParameters().size();
|
"constructor: " + constructor.getValueParameters().size();
|
||||||
|
|
||||||
MutableClosure closure = ImplementationBodyCodegen.this.context.closure;
|
MutableClosure closure = ImplementationBodyCodegen.this.context.closure;
|
||||||
if (closure != null && closure.getCaptureThis() != null) {
|
if (closure != null) {
|
||||||
Type type = typeMapper.mapType(enclosingClassDescriptor(bindingContext, descriptor));
|
ClassDescriptor captureThis = closure.getCaptureThis();
|
||||||
iv.load(0, classAsmType);
|
if (captureThis != null) {
|
||||||
iv.getfield(classAsmType.getInternalName(), CAPTURED_THIS_FIELD, type.getDescriptor());
|
iv.load(0, classAsmType);
|
||||||
|
Type type = typeMapper.mapType(captureThis);
|
||||||
|
iv.getfield(classAsmType.getInternalName(), CAPTURED_THIS_FIELD, type.getDescriptor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int parameterIndex = 1; // localVariable 0 = this
|
int parameterIndex = 1; // localVariable 0 = this
|
||||||
|
|||||||
@@ -31,9 +31,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface CalculatedClosure {
|
public interface CalculatedClosure {
|
||||||
@Nullable
|
|
||||||
ClassDescriptor getEnclosingClass();
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
ResolvedCall<ConstructorDescriptor> getSuperCall();
|
ResolvedCall<ConstructorDescriptor> getSuperCall();
|
||||||
|
|
||||||
|
|||||||
@@ -100,11 +100,6 @@ public class CodegenBinding {
|
|||||||
return asmTypeForScriptDescriptor(bindingContext, scriptDescriptor);
|
return asmTypeForScriptDescriptor(bindingContext, scriptDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClassDescriptor enclosingClassDescriptor(BindingContext bindingContext, ClassDescriptor descriptor) {
|
|
||||||
CalculatedClosure closure = bindingContext.get(CLOSURE, descriptor);
|
|
||||||
return closure == null ? null : closure.getEnclosingClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ClassDescriptor anonymousClassForFunction(
|
public static ClassDescriptor anonymousClassForFunction(
|
||||||
@NotNull BindingContext bindingContext,
|
@NotNull BindingContext bindingContext,
|
||||||
@@ -157,8 +152,8 @@ public class CodegenBinding {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClassDescriptor enclosing = enclosingClassDescriptor(bindingContext, classDescriptor);
|
MutableClosure closure = bindingContext.get(CLOSURE, classDescriptor);
|
||||||
if (enclosing == null) {
|
if (closure == null || closure.getEnclosingClass() == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ public final class MutableClosure implements CalculatedClosure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
|
||||||
public ClassDescriptor getEnclosingClass() {
|
public ClassDescriptor getEnclosingClass() {
|
||||||
return enclosingClass;
|
return enclosingClass;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user