| // Copyright (c) 2017, 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.utils; | |
| import com.android.tools.r8.graph.ClassKind; | |
| import com.android.tools.r8.graph.DexApplication; | |
| import com.android.tools.r8.graph.DexLibraryClass; | |
| import com.android.tools.r8.logging.Log; | |
| import java.util.function.Supplier; | |
| /** Represents a collection of library classes. */ | |
| public class LibraryClassCollection extends ClassMap<DexLibraryClass> { | |
| public LibraryClassCollection(ClassProvider<DexLibraryClass> classProvider) { | |
| super(null, classProvider); | |
| } | |
| @Override | |
| DexLibraryClass resolveClassConflict(DexLibraryClass a, DexLibraryClass b) { | |
| if (Log.ENABLED) { | |
| Log.warn(DexApplication.class, | |
| "Class `%s` was specified twice as a library type.", a.type.toSourceString()); | |
| } | |
| return a; | |
| } | |
| @Override | |
| Supplier<DexLibraryClass> getTransparentSupplier(DexLibraryClass clazz) { | |
| return clazz; | |
| } | |
| @Override | |
| ClassKind getClassKind() { | |
| return ClassKind.LIBRARY; | |
| } | |
| @Override | |
| public String toString() { | |
| return "library classes: " + super.toString(); | |
| } | |
| } |