Correct kotlin source debug extension tests for 1.4
Bug: 179666509
Bug: 185358363
Change-Id: Ifca38dc2be63aef05c8e45a846241c8af670dca1
diff --git a/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java b/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java
index 550e21f..8540d13 100644
--- a/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java
+++ b/src/test/java/com/android/tools/r8/annotations/SourceDebugExtensionTest.java
@@ -9,13 +9,11 @@
import static com.android.tools.r8.ToolHelper.getKotlinCompilers;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.KotlinCompilerTool.KotlinCompiler;
-import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestRuntime;
@@ -77,15 +75,10 @@
}
private void inspectSourceDebugExtension(CodeInspector inspector) {
- ClassSubject clazz = inspector.clazz("retrace.InlineFunctionKt");
+ ClassSubject clazz = inspector.clazz("retrace.MainKt");
assertThat(clazz, isPresent());
AnnotationSubject sourceDebugExtensions =
clazz.annotation("dalvik.annotation.SourceDebugExtension");
- // TODO(b/179866574): This is somehow not present
- if (kotlinCompiler.is(KotlinCompilerVersion.KOTLINC_1_4_20)) {
- assertThat(sourceDebugExtensions, not(isPresent()));
- } else {
- assertThat(sourceDebugExtensions, isPresent());
- }
+ assertThat(sourceDebugExtensions, isPresent());
}
}
diff --git a/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionInSameFileRetraceTests.java b/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionInSameFileRetraceTests.java
index b65563e..610097d 100644
--- a/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionInSameFileRetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionInSameFileRetraceTests.java
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.retrace;
-import static com.android.tools.r8.Collectors.toSingle;
import static com.android.tools.r8.ToolHelper.getFilesInTestFolderRelativeToClass;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
@@ -14,7 +13,6 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.StringContains.containsString;
-import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
@@ -22,6 +20,7 @@
import com.android.tools.r8.KotlinTestParameters;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.naming.retrace.StackTrace;
+import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
import com.android.tools.r8.utils.codeinspector.Matchers.LinePosition;
@@ -30,6 +29,7 @@
import java.nio.file.Path;
import java.util.Collection;
import java.util.List;
+import java.util.stream.Collectors;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -69,10 +69,12 @@
}
}
+ private int getObfuscatedLinePosition() {
+ return kotlinc.is(KotlinCompilerVersion.KOTLINC_1_4_20) ? 32 : 43;
+ }
+
@Test
public void testRuntime() throws Exception {
- // TODO(b/179666509): SMAP has changed.
- assumeTrue(kotlinc.is(KotlinCompilerVersion.KOTLINC_1_3_72));
testForRuntime(parameters)
.addProgramFiles(compilationResults.getForConfiguration(kotlinc, targetVersion))
.addRunClasspathFiles(buildOnDexRuntime(parameters, getKotlinStdlibJar(kotlinc)))
@@ -80,13 +82,12 @@
.assertFailureWithErrorThatMatches(containsString("foo"))
.assertFailureWithErrorThatMatches(
containsString(
- "at retrace.InlineFunctionsInSameFileKt.main(InlineFunctionsInSameFile.kt:43"));
+ "at retrace.InlineFunctionsInSameFileKt.main(InlineFunctionsInSameFile.kt:"
+ + getObfuscatedLinePosition()));
}
@Test
public void testRetraceKotlinInlineStaticFunction() throws Exception {
- // TODO(b/179666509): SMAP has changed.
- assumeTrue(kotlinc.is(KotlinCompilerVersion.KOTLINC_1_3_72));
Path kotlinSources = compilationResults.getForConfiguration(kotlinc, targetVersion);
CodeInspector kotlinInspector = new CodeInspector(kotlinSources);
testForR8(parameters.getBackend())
@@ -116,7 +117,10 @@
8,
FILENAME_INLINE),
LinePosition.create(
- mainSubject.asFoundMethodSubject(), 1, 43, FILENAME_INLINE));
+ mainSubject.asFoundMethodSubject(),
+ 1,
+ getObfuscatedLinePosition(),
+ FILENAME_INLINE));
checkInlineInformation(stackTrace, codeInspector, mainSubject, inlineStack);
});
}
@@ -128,10 +132,11 @@
LinePosition inlineStack) {
assertThat(mainSubject, isPresent());
RetraceFrameResult retraceResult =
- mainSubject
- .streamInstructions()
- .filter(InstructionSubject::isThrow)
- .collect(toSingle())
+ ListUtils.last(
+ mainSubject
+ .streamInstructions()
+ .filter(InstructionSubject::isThrow)
+ .collect(Collectors.toList()))
.retraceLinePosition(codeInspector.retrace());
assertThat(retraceResult, isInlineFrame());
assertThat(retraceResult, isInlineStack(inlineStack));
diff --git a/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionRetraceTest.java b/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionRetraceTest.java
index 17d4dc6..232c1f5 100644
--- a/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionRetraceTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/KotlinInlineFunctionRetraceTest.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.retrace;
-import static com.android.tools.r8.Collectors.toSingle;
import static com.android.tools.r8.ToolHelper.getFilesInTestFolderRelativeToClass;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
@@ -15,14 +14,13 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.StringContains.containsString;
-import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.CompilationMode;
-import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.KotlinTestBase;
import com.android.tools.r8.KotlinTestParameters;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.naming.retrace.StackTrace;
+import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.FoundMethodSubject;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
@@ -32,6 +30,7 @@
import java.nio.file.Path;
import java.util.Collection;
import java.util.List;
+import java.util.stream.Collectors;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -96,8 +95,6 @@
@Test
public void testRetraceKotlinInlineStaticFunction() throws Exception {
- // TODO(b/179666509): SMAP has changed.
- assumeTrue(kotlinc.is(KotlinCompilerVersion.KOTLINC_1_3_72));
String main = "retrace.MainKt";
String mainFileName = "Main.kt";
Path kotlinSources = compilationResults.getForConfiguration(kotlinc, targetVersion);
@@ -128,8 +125,6 @@
@Test
public void testRetraceKotlinInlineInstanceFunction() throws Exception {
- // TODO(b/179666509): SMAP has changed.
- assumeTrue(kotlinc.is(KotlinCompilerVersion.KOTLINC_1_3_72));
String main = "retrace.MainInstanceKt";
String mainFileName = "MainInstance.kt";
Path kotlinSources = compilationResults.getForConfiguration(kotlinc, targetVersion);
@@ -163,8 +158,6 @@
@Test
public void testRetraceKotlinNestedInlineFunction() throws Exception {
- // TODO(b/179666509): SMAP has changed.
- assumeTrue(kotlinc.is(KotlinCompilerVersion.KOTLINC_1_3_72));
String main = "retrace.MainNestedKt";
String mainFileName = "MainNested.kt";
Path kotlinSources = compilationResults.getForConfiguration(kotlinc, targetVersion);
@@ -197,8 +190,6 @@
@Test
public void testRetraceKotlinNestedInlineFunctionOnFirstLine() throws Exception {
- // TODO(b/179666509): SMAP has changed.
- assumeTrue(kotlinc.is(KotlinCompilerVersion.KOTLINC_1_3_72));
String main = "retrace.MainNestedFirstLineKt";
String mainFileName = "MainNestedFirstLine.kt";
Path kotlinSources = compilationResults.getForConfiguration(kotlinc, targetVersion);
@@ -236,10 +227,11 @@
LinePosition inlineStack) {
assertThat(mainSubject, isPresent());
RetraceFrameResult retraceResult =
- mainSubject
- .streamInstructions()
- .filter(InstructionSubject::isThrow)
- .collect(toSingle())
+ ListUtils.last(
+ mainSubject
+ .streamInstructions()
+ .filter(InstructionSubject::isThrow)
+ .collect(Collectors.toList()))
.retraceLinePosition(codeInspector.retrace());
assertThat(retraceResult, isInlineFrame());
assertThat(retraceResult, isInlineStack(inlineStack));
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/Matchers.java b/src/test/java/com/android/tools/r8/utils/codeinspector/Matchers.java
index aa6d435..1aad4cc 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/Matchers.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/Matchers.java
@@ -523,7 +523,6 @@
Box<Boolean> returnValue = new Box<>();
single.visitFrames(
(method, __) -> {
- boolean sameMethod;
LinePosition currentInline = currentPosition.get();
if (currentInline == null) {
returnValue.set(false);
@@ -533,7 +532,7 @@
returnValue.set(false);
return;
}
- sameMethod =
+ boolean sameMethod =
method.asKnown().getMethodReference().equals(currentInline.methodReference);
boolean samePosition =
method.getOriginalPositionOrDefault(currentInline.minifiedPosition)