// Copyright (c) 2022, 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.errors;

import static com.android.tools.r8.utils.InternalOptions.invokePolymorphicOnVarHandleApiLevel;

import com.android.tools.r8.Keep;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;

@Keep
public class UnsupportedInvokePolymorphicVarHandleDiagnostic extends UnsupportedFeatureDiagnostic {

  // API: MUST NOT CHANGE!
  private static final String DESCRIPTOR = "invoke-polymorphic-var-handle";

  public UnsupportedInvokePolymorphicVarHandleDiagnostic(Origin origin, Position position) {
    super(DESCRIPTOR, invokePolymorphicOnVarHandleApiLevel(), origin, position);
  }

  @Override
  public String getDiagnosticMessage() {
    return UnsupportedFeatureDiagnostic.makeMessage(
        invokePolymorphicOnVarHandleApiLevel(),
        "Call to polymorphic signature of VarHandle",
        getPosition().toString());
  }
}
