Minor, make CapturedParamInfo#skipInConstructor immutable

This commit is contained in:
Alexander Udalov
2016-06-05 19:41:23 +03:00
parent b370ac0b37
commit 390b78b7f7
4 changed files with 18 additions and 19 deletions
@@ -451,7 +451,8 @@ public class AnonymousObjectTransformer extends ObjectTransformer<AnonymousObjec
CapturedParamInfo recapturedParamInfo = capturedParamBuilder.addCapturedParam(
desc,
alreadyAddedParam != null ? alreadyAddedParam.getNewFieldName() : getNewFieldName(desc.getFieldName(), false)
alreadyAddedParam != null ? alreadyAddedParam.getNewFieldName() : getNewFieldName(desc.getFieldName(), false),
alreadyAddedParam != null
);
StackValue composed = StackValue.field(
desc.getType(),
@@ -465,9 +466,6 @@ public class AnonymousObjectTransformer extends ObjectTransformer<AnonymousObjec
constructorParamBuilder.addCapturedParam(recapturedParamInfo, recapturedParamInfo.getNewFieldName())
.setRemapValue(composed);
if (alreadyAddedParam != null) {
recapturedParamInfo.setSkipInConstructor(true);
}
if (isThis0(desc.getFieldName())) {
alreadyAdded.put(key, recapturedParamInfo);
@@ -484,7 +482,7 @@ public class AnonymousObjectTransformer extends ObjectTransformer<AnonymousObjec
Type ownerType = Type.getObjectType(parent.getLambdaInternalName());
CapturedParamDesc desc = new CapturedParamDesc(ownerType, InlineCodegenUtil.THIS, ownerType);
CapturedParamInfo recapturedParamInfo =
capturedParamBuilder.addCapturedParam(desc, InlineCodegenUtil.THIS$0/*outer lambda/object*/);
capturedParamBuilder.addCapturedParam(desc, InlineCodegenUtil.THIS$0/*outer lambda/object*/, false);
StackValue composed = StackValue.LOCAL_0;
recapturedParamInfo.setRemapValue(composed);
allRecapturedParameters.add(desc);
@@ -23,21 +23,27 @@ import org.jetbrains.kotlin.codegen.StackValue;
public class CapturedParamInfo extends ParameterInfo {
public final CapturedParamDesc desc;
private final String newFieldName;
private boolean skipInConstructor;
private final boolean skipInConstructor;
public CapturedParamInfo(@NotNull CapturedParamDesc desc, @NotNull String newFieldName, boolean skipped, int index, int remapIndex) {
super(desc.getType(), skipped, index, remapIndex, index);
this.desc = desc;
this.newFieldName = newFieldName;
this.skipInConstructor = false;
}
public CapturedParamInfo(
@NotNull CapturedParamDesc desc, @NotNull String newFieldName, boolean skipped, int index, @Nullable StackValue remapIndex
@NotNull CapturedParamDesc desc,
@NotNull String newFieldName,
boolean skipped,
int index,
@Nullable StackValue remapIndex,
boolean skipInConstructor
) {
super(desc.getType(), skipped, index, remapIndex, index);
this.desc = desc;
this.newFieldName = newFieldName;
this.skipInConstructor = skipInConstructor;
}
@NotNull
@@ -57,10 +63,9 @@ public class CapturedParamInfo extends ParameterInfo {
@NotNull
private CapturedParamInfo clone(int newIndex, @Nullable StackValue newRemapIndex) {
CapturedParamInfo capturedParamInfo = new CapturedParamInfo(desc, newFieldName, isSkipped, newIndex, newRemapIndex);
capturedParamInfo.setLambda(getLambda());
capturedParamInfo.setSkipInConstructor(skipInConstructor);
return capturedParamInfo;
CapturedParamInfo result = new CapturedParamInfo(desc, newFieldName, isSkipped, newIndex, newRemapIndex, skipInConstructor);
result.setLambda(getLambda());
return result;
}
@NotNull
@@ -71,8 +76,4 @@ public class CapturedParamInfo extends ParameterInfo {
public boolean isSkipInConstructor() {
return skipInConstructor;
}
public void setSkipInConstructor(boolean skipInConstructor) {
this.skipInConstructor = skipInConstructor;
}
}
@@ -585,7 +585,7 @@ public class InlineCodegen extends CallGenerator {
ParameterInfo info;
if (capturedParamIndex >= 0) {
CapturedParamDesc capturedParamInfoInLambda = activeLambda.getCapturedVars().get(capturedParamIndex);
info = invocationParamBuilder.addCapturedParam(capturedParamInfoInLambda, capturedParamInfoInLambda.getFieldName());
info = invocationParamBuilder.addCapturedParam(capturedParamInfoInLambda, capturedParamInfoInLambda.getFieldName(), false);
info.setRemapValue(remappedIndex);
}
else {
@@ -55,8 +55,8 @@ internal class ParametersBuilder private constructor() {
private fun nextCapturedIndex(): Int = nextCaptured
fun addCapturedParam(desc: CapturedParamDesc, newFieldName: String): CapturedParamInfo {
return addCapturedParameter(CapturedParamInfo(desc, newFieldName, false, nextCapturedIndex(), null))
fun addCapturedParam(desc: CapturedParamDesc, newFieldName: String, skipInConstructor: Boolean): CapturedParamInfo {
return addCapturedParameter(CapturedParamInfo(desc, newFieldName, false, nextCapturedIndex(), null, skipInConstructor))
}
fun addCapturedParamCopy(copyFrom: CapturedParamInfo): CapturedParamInfo {