// 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.lambda;

import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexProgramClass;
import java.util.Collection;

public class LambdaDeserializationMethodRemover {

  /** Remove lambda deserialization methods. */
  public static void run(AppView<AppInfo> appView) {
    if (appView.options().desugarState.isOn()) {
      run(appView, appView.appInfo().classes());
    }
  }

  /** Remove lambda deserialization methods. */
  public static void run(AppView<?> appView, Collection<DexProgramClass> classes) {
    assert appView.options().desugarState.isOn() || classes.isEmpty();
    DexMethod reference = appView.dexItemFactory().deserializeLambdaMethod;
    for (DexProgramClass clazz : classes) {
      clazz.removeMethod(reference);
    }
  }
}
