| // 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.ir.desugar.desugaredlibrary.machinespecification; |
| |
| import com.android.tools.r8.graph.DexMethod; |
| import com.android.tools.r8.graph.DexProto; |
| import com.android.tools.r8.graph.DexString; |
| import com.android.tools.r8.graph.DexType; |
| import com.android.tools.r8.synthesis.SyntheticNaming.SyntheticKind; |
| |
| /** |
| * A derived method is: - if the holderKind is null, a normal dexMethod; - if the holderKind is |
| * non-null, a method derived from the dexMethod In that case the method holder is used as the |
| * context to generate the holder type. The method may however differ (for example the method name |
| * may be different). |
| */ |
| public class DerivedMethod { |
| |
| private final DexMethod method; |
| private final SyntheticKind holderKind; |
| |
| public DerivedMethod(DexMethod method) { |
| this(method, null); |
| } |
| |
| public DerivedMethod(DexMethod method, SyntheticKind holderKind) { |
| this.holderKind = holderKind; |
| this.method = method; |
| } |
| |
| public SyntheticKind getHolderKind() { |
| return holderKind; |
| } |
| |
| public DexType getHolderContext() { |
| return method.getHolderType(); |
| } |
| |
| public DexMethod getMethod() { |
| return method; |
| } |
| |
| public DexString getName() { |
| return method.getName(); |
| } |
| |
| public DexProto getProto() { |
| return method.getProto(); |
| } |
| } |