// 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.diagnostic.internal;

import com.android.tools.r8.diagnostic.MissingDefinitionContext;
import com.android.tools.r8.diagnostic.MissingDefinitionInfo;
import com.android.tools.r8.diagnostic.MissingMethodInfo;
import com.android.tools.r8.references.MethodReference;
import java.util.Collection;

public class MissingMethodInfoImpl extends MissingDefinitionInfoBase implements MissingMethodInfo {

  private final MethodReference methodReference;

  private MissingMethodInfoImpl(
      MethodReference methodReference,
      Collection<MissingDefinitionContext> referencedFromContexts) {
    super(referencedFromContexts);
    this.methodReference = methodReference;
  }

  public static Builder builder() {
    return new Builder();
  }

  @Override
  public MethodReference getMethodReference() {
    return methodReference;
  }

  public static class Builder extends MissingDefinitionInfoBase.Builder {

    private MethodReference methodReference;

    private Builder() {}

    public Builder setMethod(MethodReference methodReference) {
      this.methodReference = methodReference;
      return this;
    }

    public MissingDefinitionInfo build() {
      return new MissingMethodInfoImpl(methodReference, referencedFromContextsBuilder.build());
    }
  }
}
