blob: 5f1077cc3ff914df0733cf6391d9a1af05a7acdd [file] [log] [blame]
// Copyright (c) 2021, 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 java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
public class LibraryDesugaringTestConfiguration {
private final List<StringResource> desugaredLibrarySpecificationResources;
public static final LibraryDesugaringTestConfiguration DISABLED =
new LibraryDesugaringTestConfiguration();
private LibraryDesugaringTestConfiguration() {
this.desugaredLibrarySpecificationResources = null;
}
private LibraryDesugaringTestConfiguration(
List<StringResource> desugaredLibrarySpecificationResources) {
this.desugaredLibrarySpecificationResources = desugaredLibrarySpecificationResources;
}
public static class Builder {
private final List<StringResource> desugaredLibrarySpecificationResources = new ArrayList<>();
private Builder() {}
public Builder addDesugaredLibraryConfiguration(StringResource desugaredLibrarySpecification) {
desugaredLibrarySpecificationResources.add(desugaredLibrarySpecification);
return this;
}
public LibraryDesugaringTestConfiguration build() {
assert !desugaredLibrarySpecificationResources.isEmpty();
return new LibraryDesugaringTestConfiguration(desugaredLibrarySpecificationResources);
}
}
public static Builder builder() {
return new Builder();
}
public static LibraryDesugaringTestConfiguration forSpecification(Path specification) {
return LibraryDesugaringTestConfiguration.builder()
.addDesugaredLibraryConfiguration(StringResource.fromFile(specification))
.build();
}
public boolean isEnabled() {
return this != DISABLED;
}
public void configure(D8Command.Builder builder) {
if (!isEnabled()) {
return;
}
desugaredLibrarySpecificationResources.forEach(builder::addDesugaredLibraryConfiguration);
}
public void configure(R8Command.Builder builder) {
if (!isEnabled()) {
return;
}
desugaredLibrarySpecificationResources.forEach(builder::addDesugaredLibraryConfiguration);
}
}