blob: 08b98e6fc743d36b3926e5df59a78162feb743c5 [file] [log] [blame]
// Copyright (c) 2022, 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.ir.desugar.desugaredlibrary;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.ir.desugar.desugaredlibrary.machinespecification.MachineDesugaredLibrarySpecification;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.Timing;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
public interface DesugaredLibrarySpecification {
default boolean isHuman() {
return false;
}
default boolean isLegacy() {
return false;
}
boolean isEmpty();
boolean isLibraryCompilation();
String getJsonSource();
String getSynthesizedLibraryClassesPackagePrefix();
List<String> getExtraKeepRules();
AndroidApiLevel getRequiredCompilationApiLevel();
MachineDesugaredLibrarySpecification toMachineSpecification(DexApplication app, Timing timing)
throws IOException;
MachineDesugaredLibrarySpecification toMachineSpecification(
InternalOptions options, Path library, Timing timing, Path desugaredJDKLib)
throws IOException;
default MachineDesugaredLibrarySpecification toMachineSpecification(
InternalOptions options, Path library, Timing timing) throws IOException {
assert !isLibraryCompilation();
return toMachineSpecification(options, library, timing, null);
}
}