// 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.MissingFieldInfo;
import com.android.tools.r8.references.FieldReference;
import java.util.Collection;

public class MissingFieldInfoImpl extends MissingDefinitionInfoBase implements MissingFieldInfo {

  private final FieldReference fieldReference;

  private MissingFieldInfoImpl(
      FieldReference fieldReference, Collection<MissingDefinitionContext> referencedFromContexts) {
    super(referencedFromContexts);
    this.fieldReference = fieldReference;
  }

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

  @Override
  public FieldReference getFieldReference() {
    return fieldReference;
  }

  public static class Builder extends MissingDefinitionInfoBase.Builder {

    private FieldReference fieldReference;

    private Builder() {}

    public Builder setField(FieldReference fieldReference) {
      this.fieldReference = fieldReference;
      return this;
    }

    public MissingDefinitionInfo build() {
      return new MissingFieldInfoImpl(fieldReference, referencedFromContextsBuilder.build());
    }
  }
}
