| // Copyright (c) 2023, 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.keepanno.annotations.KeepForApi; |
| import com.android.tools.r8.origin.Origin; |
| import com.android.tools.r8.references.ClassReference; |
| import com.google.common.collect.ImmutableList; |
| import java.util.List; |
| |
| @KeepForApi |
| public class DuplicateTypeInProgramAndLibraryDiagnostic extends DuplicateTypesDiagnostic { |
| |
| public DuplicateTypeInProgramAndLibraryDiagnostic( |
| ClassReference type, Origin programOrigin, Origin libraryOrigin) { |
| super(type, ImmutableList.of(programOrigin, libraryOrigin)); |
| } |
| |
| /** Get the origin of the program definition for the duplicated type. */ |
| public Origin getProgramOrigin() { |
| return ((List<Origin>) getOrigins()).get(0); |
| } |
| |
| /** Get the origin of the library definition for the duplicated type. */ |
| public Origin getLibraryOrigin() { |
| return ((List<Origin>) getOrigins()).get(1); |
| } |
| |
| @Override |
| public String getDiagnosticMessage() { |
| String typeName = getType().getTypeName(); |
| return "Type " |
| + typeName |
| + " is defined by both the program: " |
| + getProgramOrigin() |
| + " and the library: " |
| + getLibraryOrigin(); |
| } |
| } |