Fix ProcesKotlinStdLib tests by adjusting index and null-check
Change-Id: I7c3f26c17c3076c4855061b906bc23ffcc1bc3c0
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizerUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizerUtils.java
index 67fb7da..3b04e91 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizerUtils.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataSynthesizerUtils.java
@@ -111,8 +111,13 @@
&& originalTypeInfo.getArguments().get(0).isStarProjection();
return kmType;
} else {
+ // TODO(b/152886451): Variance is only NULL when star projection. If that is the case
+ // we should just apply starProjection.
return kmType.visitArgument(
- flagsOf(), projectionInfo == null ? KmVariance.INVARIANT : projectionInfo.variance);
+ flagsOf(),
+ projectionInfo == null || projectionInfo.variance == null
+ ? KmVariance.INVARIANT
+ : projectionInfo.variance);
}
},
allTypeParameters,
@@ -145,9 +150,13 @@
assert projectionInfo == null || projectionInfo.isStarProjection();
return kmType;
} else {
+ // TODO(b/152886451): Variance is only NULL when star projection. If that is the case
+ // we should just apply starProjection.
return kmType.visitArgument(
flagsOf(),
- projectionInfo == null ? KmVariance.INVARIANT : projectionInfo.variance);
+ projectionInfo == null || projectionInfo.variance == null
+ ? KmVariance.INVARIANT
+ : projectionInfo.variance);
}
},
allTypeParameters,
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
index 9826f3a..e9bc069 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
@@ -83,7 +83,7 @@
public KotlinTypeProjectionInfo getArgumentOrNull(int index) {
List<KotlinTypeProjectionInfo> arguments = getArguments();
- return arguments.size() >= index ? getArguments().get(index) : null;
+ return arguments.size() > index ? getArguments().get(index) : null;
}
public KotlinTypeInfo toRenamed(KotlinMetadataSynthesizer synthesizer) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
index 0bee8cc..a16c78e 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
@@ -32,6 +32,7 @@
public void visit(KmTypeVisitor visitor) {
KmTypeVisitor kmTypeVisitor = visitor.visitArgument(flagsOf(), variance);
+ // TODO(b/152886451): Check if this check should be before visitor.visitArgument(...).
if (isStarProjection()) {
kmTypeVisitor.visitStarProjection();
} else {