blob: 9b7c709634a5db75791cc82c9b0574b352cb7886 [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.ir.desugar;
import com.android.tools.r8.graph.DexProgramClass;
/** Interface for desugaring a class. */
public abstract class CfClassDesugaringCollection {
public abstract void desugar(DexProgramClass clazz, CfClassDesugaringEventConsumer eventConsumer);
/** Returns true if the given class needs desugaring. */
public abstract boolean needsDesugaring(DexProgramClass clazz);
public abstract boolean isEmpty();
public static class NonEmptyCfClassDesugaringCollection extends CfClassDesugaringCollection {
private final RecordRewriter recordRewriter;
NonEmptyCfClassDesugaringCollection(RecordRewriter recordRewriter) {
this.recordRewriter = recordRewriter;
}
@Override
public void desugar(DexProgramClass clazz, CfClassDesugaringEventConsumer eventConsumer) {
recordRewriter.desugar(clazz, eventConsumer);
}
@Override
public boolean needsDesugaring(DexProgramClass clazz) {
return recordRewriter.needsDesugaring(clazz);
}
@Override
public boolean isEmpty() {
return false;
}
}
public static class EmptyCfClassDesugaringCollection extends CfClassDesugaringCollection {
@Override
public void desugar(DexProgramClass clazz, CfClassDesugaringEventConsumer eventConsumer) {
// Intentionally empty.
}
@Override
public boolean needsDesugaring(DexProgramClass clazz) {
return false;
}
@Override
public boolean isEmpty() {
return true;
}
}
}