blob: 9fbca07baee1942cdcec03cd74cf1febb77abfd6 [file] [log] [blame]
// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
import com.android.tools.r8.origin.EmbeddedOrigin;
import com.google.common.collect.ImmutableList;
import java.nio.file.Path;
import java.util.List;
public class CompatProguardCommandBuilder extends R8Command.Builder {
private static final List<String> REFLECTIONS = ImmutableList.of(
"-identifiernamestring public class java.lang.Class {",
" public static java.lang.Class forName(java.lang.String);",
" public java.lang.reflect.Field getField(java.lang.String);",
" public java.lang.reflect.Field getDeclaredField(java.lang.String);",
" public java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class[]);",
" public java.lang.reflect.Method getDeclaredMethod(java.lang.String, java.lang.Class[]);",
"}",
"-identifiernamestring public class java.util.concurrent.atomic.AtomicIntegerFieldUpdater {",
" public static java.util.concurrent.atomic.AtomicIntegerFieldUpdater",
" newUpdater(java.lang.Class, java.lang.String);",
"}",
"-identifiernamestring public class java.util.concurrent.atomic.AtomicLongFieldUpdater {",
" public static java.util.concurrent.atomic.AtomicLongFieldUpdater",
" newUpdater(java.lang.Class, java.lang.String);",
"}",
"-identifiernamestring public class",
" java.util.concurrent.atomic.AtomicReferenceFieldUpdater {",
" public static java.util.concurrent.atomic.AtomicReferenceFieldUpdater",
" newUpdater(java.lang.Class, java.lang.Class, java.lang.String);",
"}"
);
public CompatProguardCommandBuilder() {
this(true);
}
public CompatProguardCommandBuilder(
boolean forceProguardCompatibility, DiagnosticsHandler diagnosticsHandler) {
super(forceProguardCompatibility, diagnosticsHandler);
setIgnoreDexInArchive(true);
addProguardConfiguration(REFLECTIONS, EmbeddedOrigin.INSTANCE);
}
public CompatProguardCommandBuilder(boolean forceProguardCompatibility) {
super(forceProguardCompatibility);
setIgnoreDexInArchive(true);
setDisableDesugaring(true);
addProguardConfiguration(REFLECTIONS, EmbeddedOrigin.INSTANCE);
}
public void setProguardCompatibilityRulesOutput(Path path) {
proguardCompatibilityRulesOutput = path;
}
}