| // 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.origin.Origin; | 
 | import com.android.tools.r8.position.Position; | 
 |  | 
 | /** | 
 |  * A DiagnosticsHandler can be provided to customize handling of diagnostics information. | 
 |  * | 
 |  * <p>During compilation the warning and info methods will be called. | 
 |  */ | 
 | @Keep | 
 | public interface DiagnosticsHandler { | 
 |  | 
 |   /** | 
 |    * Handle error diagnostics. | 
 |    * | 
 |    * @param error Diagnostic containing error information. | 
 |    */ | 
 |   default void error(Diagnostic error) { | 
 |     if (error.getOrigin() != Origin.unknown()) { | 
 |       System.err.print("Error in " + error.getOrigin()); | 
 |       if (error.getPosition() != Position.UNKNOWN) { | 
 |         System.err.print(" at " + error.getPosition().getDescription()); | 
 |       } | 
 |       System.err.println(":"); | 
 |     } else { | 
 |       System.err.print("Error: "); | 
 |     } | 
 |     System.err.println(error.getDiagnosticMessage()); | 
 |   } | 
 |  | 
 |   /** | 
 |    * Handle warning diagnostics. | 
 |    * | 
 |    * @param warning Diagnostic containing warning information. | 
 |    */ | 
 |   default void warning(Diagnostic warning) { | 
 |     if (warning.getOrigin() != Origin.unknown()) { | 
 |       System.err.print("Warning in " + warning.getOrigin() + ":\n  "); | 
 |     } else { | 
 |       System.err.print("Warning: "); | 
 |     } | 
 |     System.err.println(warning.getDiagnosticMessage()); | 
 |   } | 
 |  | 
 |   /** | 
 |    * Handle info diagnostics. | 
 |    * | 
 |    * @param info Diagnostic containing the information. | 
 |    */ | 
 |   default void info(Diagnostic info) { | 
 |     if (info.getOrigin() != Origin.unknown()) { | 
 |       System.out.print("In " + info.getOrigin() + ":\n  "); | 
 |     } | 
 |     System.out.println(info.getDiagnosticMessage()); | 
 |   } | 
 | } |