Don't rewrite source file in non-minifying compat mode.
Fixes: 202799460
Change-Id: I4332c708227dac084fedb3939fadf44412c2bfd7
diff --git a/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java b/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
index da906a8..0ef79ac 100644
--- a/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
+++ b/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
@@ -26,13 +26,17 @@
public void run() {
boolean isMinifying = appView.options().isMinifying();
+ boolean isCompatR8 = appView.options().forceProguardCompatibility;
+ if (!isMinifying && isCompatR8) {
+ // Compatibility mode will only apply -renamesourcefileattribute when minifying names.
+ return;
+ }
ProguardConfiguration proguardConfiguration = appView.options().getProguardConfiguration();
boolean hasKeptNonRenamedSourceFile =
proguardConfiguration.getRenameSourceFileAttribute() == null
&& proguardConfiguration.getKeepAttributes().sourceFile;
// If source file is kept without a rewrite, it is only modified it in a minifing full-mode.
- if (hasKeptNonRenamedSourceFile
- && (!isMinifying || appView.options().forceProguardCompatibility)) {
+ if (hasKeptNonRenamedSourceFile && (!isMinifying || isCompatR8)) {
return;
}
assert !isMinifying || appView.appInfo().hasLiveness();
diff --git a/src/test/java/com/android/tools/r8/naming/sourcefile/RenameSourceFileAttributeCompatTest.java b/src/test/java/com/android/tools/r8/naming/sourcefile/RenameSourceFileAttributeCompatTest.java
index 59d36b0..55784ce 100644
--- a/src/test/java/com/android/tools/r8/naming/sourcefile/RenameSourceFileAttributeCompatTest.java
+++ b/src/test/java/com/android/tools/r8/naming/sourcefile/RenameSourceFileAttributeCompatTest.java
@@ -6,7 +6,6 @@
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.ProguardVersion;
-import com.android.tools.r8.R8CompatTestBuilder;
import com.android.tools.r8.SingleTestRunResult;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -107,15 +106,7 @@
builder
.addKeepRules("-dontobfuscate")
.run(parameters.getRuntime(), TestClass.class)
- .applyIf(
- fullMode,
- this::checkSourceFileIsRemoved,
- // TODO(b/202799460): Compat should only -renamesourcefileattribute when obfuscating.
- b ->
- b.applyIf(
- builder instanceof R8CompatTestBuilder,
- this::checkSourceFileIsRenamed,
- this::checkSourceFileIsOriginal));
+ .applyIf(fullMode, this::checkSourceFileIsRemoved, this::checkSourceFileIsOriginal);
}
private <RR extends SingleTestRunResult<RR>> void testDontOptimize(