blob: 056d652e9c7c9eb093b6eb8d3337511bf95f2de8 [file] [log] [blame]
// Copyright (c) 2020, 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.inspector.internal;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.inspector.FieldInspector;
import com.android.tools.r8.inspector.ValueInspector;
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.Reference;
import java.util.Optional;
public class FieldInspectorImpl implements FieldInspector {
private final ClassInspectorImpl parent;
private final DexEncodedField field;
private FieldReference reference = null;
public FieldInspectorImpl(ClassInspectorImpl parent, DexEncodedField field) {
this.parent = parent;
this.field = field;
}
@Override
public FieldReference getFieldReference() {
if (reference == null) {
reference =
Reference.field(
parent.getClassReference(),
field.field.name.toString(),
Reference.typeFromDescriptor(field.field.type.toDescriptorString()));
}
return reference;
}
@Override
public boolean isStatic() {
return field.accessFlags.isStatic();
}
@Override
public boolean isFinal() {
return field.accessFlags.isFinal();
}
@Override
public Optional<ValueInspector> getInitialValue() {
if (field.isStatic() && field.getStaticValue() != null) {
return Optional.of(new ValueInspectorImpl(field.getStaticValue(), field.field.type));
}
return Optional.empty();
}
}