|  | // 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; | 
|  |  | 
|  | import com.android.tools.r8.keepanno.annotations.KeepForApi; | 
|  | import com.android.tools.r8.origin.Origin; | 
|  | import com.android.tools.r8.position.Position; | 
|  |  | 
|  | /** Interface for all diagnostic message produced by D8 and R8. */ | 
|  | @KeepForApi | 
|  | public interface Diagnostic { | 
|  |  | 
|  | /** | 
|  | * Origin of the resource causing the problem. | 
|  | * @return Origin.unknown() when origin is not available. | 
|  | */ | 
|  | Origin getOrigin(); | 
|  |  | 
|  | /** | 
|  | * Position of the problem in the origin. | 
|  | * @return {@link Position#UNKNOWN} when position is not available. | 
|  | */ | 
|  | Position getPosition(); | 
|  |  | 
|  | /** | 
|  | * User friendly description of the problem. | 
|  | */ | 
|  | String getDiagnosticMessage(); | 
|  | } |