blob: 38f6a468017ec232e40695f32258a2b73a732a32 [file] [log] [blame]
// 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 com.android.tools.r8.Diagnostic;
import com.android.tools.r8.Keep;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
@Keep
public class AssumeValuesMissingStaticFieldDiagnostic implements Diagnostic {
private final DexType fieldHolder;
private final DexString fieldName;
private final Origin origin;
private final Position position;
private AssumeValuesMissingStaticFieldDiagnostic(
DexType fieldHolder, DexString fieldName, Origin origin, Position position) {
this.fieldHolder = fieldHolder;
this.fieldName = fieldName;
this.origin = origin;
this.position = position;
}
@Override
public Origin getOrigin() {
return origin;
}
@Override
public Position getPosition() {
return position;
}
@Override
public String getDiagnosticMessage() {
return "The field "
+ fieldHolder.getTypeName()
+ "."
+ fieldName
+ " is used as the return value in an -assumenosideeffects or -assumevalues rule"
+ ", but no such static field exists.";
}
public static class Builder {
private DexType fieldHolder;
private DexString fieldName;
private Origin origin;
private Position position;
public Builder() {}
public Builder setField(DexType fieldHolder, DexString fieldName) {
this.fieldHolder = fieldHolder;
this.fieldName = fieldName;
return this;
}
public Builder setOrigin(Origin origin) {
this.origin = origin;
return this;
}
public Builder setPosition(Position position) {
this.position = position;
return this;
}
public AssumeValuesMissingStaticFieldDiagnostic build() {
return new AssumeValuesMissingStaticFieldDiagnostic(fieldHolder, fieldName, origin, position);
}
}
}