| // 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); |
| } |
| } |
| } |