Refactor source file rewriting.
Change-Id: Ief78d5d62b9b43321361072d859af646be31d241
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 b8ddc06..2dbf65c 100644
--- a/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
+++ b/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
@@ -30,27 +30,21 @@
}
public void run() {
+ boolean isMinifying = appView.options().isMinifying();
ProguardConfiguration proguardConfiguration = appView.options().getProguardConfiguration();
- String renameSourceFile = proguardConfiguration.getRenameSourceFileAttribute();
- boolean hasRenameSourceFileAttribute = renameSourceFile != null;
- // Return early if a user wants to keep the current source file attribute as-is.
- if (!hasRenameSourceFileAttribute
- && proguardConfiguration.getKeepAttributes().sourceFile
- && appView.options().forceProguardCompatibility) {
+ 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)) {
return;
}
- boolean isMinifying = appView.options().isMinifying();
assert !isMinifying || appView.appInfo().hasLiveness();
- // Now, the user wants either to remove source file attribute or to rename it for non-kept
- // classes.
DexString defaultRenaming = getSourceFileRenaming(proguardConfiguration);
for (DexClass clazz : application.classes()) {
- // We only parse sourceFile if -keepattributes SourceFile, but for compat we should add
- // a source file name, otherwise line positions will not be printed on the JVM or old version
- // of ART.
- if (!hasRenameSourceFileAttribute
- && proguardConfiguration.getKeepAttributes().sourceFile
- && !(isMinifying && appView.withLiveness().appInfo().isMinificationAllowed(clazz.type))) {
+ if (hasKeptNonRenamedSourceFile
+ && !appView.withLiveness().appInfo().isMinificationAllowed(clazz.type)) {
continue;
}
clazz.sourceFile = defaultRenaming;