blob: 3d4e92b6655dfe2acfd9d3f545b5b54e045aa1df [file] [log] [blame]
// Copyright (c) 2019, 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.graph;
public interface DexDefinitionSupplier {
DexDefinition definitionFor(DexReference reference);
DexEncodedField definitionFor(DexField field);
DexEncodedMethod definitionFor(DexMethod method);
@SuppressWarnings("unchecked")
default <D extends DexEncodedMember<D, R>, R extends DexMember<D, R>>
DexEncodedMember<D, R> definitionFor(DexMember<D, R> member) {
return (DexEncodedMember<D, R>) definitionFor((DexReference) member);
}
DexClass definitionFor(DexType type);
DexProgramClass definitionForProgramType(DexType type);
default <D extends DexEncodedMember<D, R>, R extends DexMember<D, R>>
DexClass definitionForHolder(DexEncodedMember<D, R> member) {
return definitionForHolder(member.toReference());
}
default <D extends DexEncodedMember<D, R>, R extends DexMember<D, R>>
DexClass definitionForHolder(DexMember<D, R> member) {
return definitionFor(member.holder);
}
DexItemFactory dexItemFactory();
}