Remove deprecation in KotEffectExpression
Bug: b/341991457
Change-Id: Ic7433efbf6730fe147837aca536ad78d0707c1d4
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
index ae218d2..f87cd78 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.kotlin;
-import static com.android.tools.r8.kotlin.KotlinMetadataUtils.consume;
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.rewriteIfNotNull;
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.rewriteList;
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
@@ -24,42 +23,35 @@
private static final List<KotlinEffectExpressionInfo> NO_EXPRESSIONS = ImmutableList.of();
private static final KotlinEffectExpressionInfo NO_EXPRESSION =
- new KotlinEffectExpressionInfo(0, 0, null, null, NO_EXPRESSIONS, NO_EXPRESSIONS);
+ new KotlinEffectExpressionInfo(
+ new KmEffectExpression(), null, NO_EXPRESSIONS, NO_EXPRESSIONS);
- private final int flags;
- private final Integer parameterIndex;
- private final KmConstantValue constantValue;
+ private final KmEffectExpression kmEffectExpression;
private final KotlinTypeInfo isInstanceType;
private final List<KotlinEffectExpressionInfo> andArguments;
private final List<KotlinEffectExpressionInfo> orArguments;
private KotlinEffectExpressionInfo(
- int flags,
- Integer parameterIndex,
- KmConstantValue constantValue,
+ KmEffectExpression kmEffectExpression,
KotlinTypeInfo isInstanceType,
List<KotlinEffectExpressionInfo> andArguments,
List<KotlinEffectExpressionInfo> orArguments) {
- this.flags = flags;
- this.parameterIndex = parameterIndex;
- this.constantValue = constantValue;
+ this.kmEffectExpression = kmEffectExpression;
this.isInstanceType = isInstanceType;
this.andArguments = andArguments;
this.orArguments = orArguments;
}
static KotlinEffectExpressionInfo create(
- KmEffectExpression effectExpression, DexItemFactory factory, Reporter reporter) {
- if (effectExpression == null) {
+ KmEffectExpression kmEffectExpression, DexItemFactory factory, Reporter reporter) {
+ if (kmEffectExpression == null) {
return NO_EXPRESSION;
}
return new KotlinEffectExpressionInfo(
- effectExpression.getFlags(),
- effectExpression.getParameterIndex(),
- effectExpression.getConstantValue(),
- KotlinTypeInfo.create(effectExpression.isInstanceType(), factory, reporter),
- create(effectExpression.getAndArguments(), factory, reporter),
- create(effectExpression.getOrArguments(), factory, reporter));
+ kmEffectExpression,
+ KotlinTypeInfo.create(kmEffectExpression.isInstanceType(), factory, reporter),
+ create(kmEffectExpression.getAndArguments(), factory, reporter),
+ create(kmEffectExpression.getOrArguments(), factory, reporter));
}
static List<KotlinEffectExpressionInfo> create(
@@ -90,26 +82,31 @@
if (this == NO_EXPRESSION) {
return false;
}
- KmEffectExpression effectExpression = consume(new KmEffectExpression(), consumer);
- effectExpression.setFlags(flags);
- effectExpression.setParameterIndex(parameterIndex);
+ KmEffectExpression rewrittenKmEffectExpression = new KmEffectExpression();
+ consumer.accept(rewrittenKmEffectExpression);
+ KotlinFlagUtils.copyAllFlags(kmEffectExpression, rewrittenKmEffectExpression);
+ rewrittenKmEffectExpression.setParameterIndex(kmEffectExpression.getParameterIndex());
+ KmConstantValue constantValue = kmEffectExpression.getConstantValue();
if (constantValue != null) {
- effectExpression.setConstantValue(constantValue);
+ rewrittenKmEffectExpression.setConstantValue(constantValue);
}
boolean rewritten =
rewriteIfNotNull(
- appView, isInstanceType, effectExpression::setInstanceType, KotlinTypeInfo::rewrite);
+ appView,
+ isInstanceType,
+ rewrittenKmEffectExpression::setInstanceType,
+ KotlinTypeInfo::rewrite);
rewritten |=
rewriteList(
appView,
andArguments,
- effectExpression.getAndArguments(),
+ rewrittenKmEffectExpression.getAndArguments(),
KotlinEffectExpressionInfo::rewrite);
rewritten |=
rewriteList(
appView,
orArguments,
- effectExpression.getOrArguments(),
+ rewrittenKmEffectExpression.getOrArguments(),
KotlinEffectExpressionInfo::rewrite);
return rewritten;
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFlagUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFlagUtils.java
index dcaca6f..1743bc9 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFlagUtils.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFlagUtils.java
@@ -7,6 +7,7 @@
import kotlin.metadata.Attributes;
import kotlin.metadata.KmClass;
import kotlin.metadata.KmConstructor;
+import kotlin.metadata.KmEffectExpression;
import kotlin.metadata.KmProperty;
import kotlin.metadata.KmPropertyAccessorAttributes;
import kotlin.metadata.jvm.JvmAttributes;
@@ -64,4 +65,9 @@
Attributes.setSecondary(dest, Attributes.isSecondary(src));
Attributes.setHasNonStableParameterNames(dest, Attributes.getHasNonStableParameterNames(src));
}
+
+ static void copyAllFlags(KmEffectExpression src, KmEffectExpression dest) {
+ Attributes.setNegated(dest, Attributes.isNegated(src));
+ Attributes.setNullCheckPredicate(dest, Attributes.isNullCheckPredicate(src));
+ }
}