blob: c6056eac1e48997e9a40f2b29118bab3d12bdcd5 [file] [log] [blame]
// Copyright (c) 2023, 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.utils;
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.naming.ClassNameMapper;
import com.android.tools.r8.naming.MapConsumer;
import java.util.function.Function;
public class MapConsumerUtils {
public static MapConsumer wrapExistingMapConsumer(
MapConsumer existingMapConsumer, MapConsumer newConsumer) {
if (existingMapConsumer == null) {
return newConsumer;
}
return new MapConsumer() {
@Override
public void accept(DiagnosticsHandler diagnosticsHandler, ClassNameMapper classNameMapper) {
existingMapConsumer.accept(diagnosticsHandler, classNameMapper);
newConsumer.accept(diagnosticsHandler, classNameMapper);
}
@Override
public void finished(DiagnosticsHandler handler) {
existingMapConsumer.finished(handler);
newConsumer.finished(handler);
}
};
}
public static <T> MapConsumer wrapExistingMapConsumerIfNotNull(
MapConsumer existingMapConsumer, T object, Function<T, MapConsumer> producer) {
if (object == null) {
return existingMapConsumer;
}
return wrapExistingMapConsumer(existingMapConsumer, producer.apply(object));
}
}