| // 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.errors.CompilationError; | 
 | import com.android.tools.r8.utils.AndroidApiLevel; | 
 |  | 
 | /** Exception to signal features that are not supported until a given API level. */ | 
 | public class ApiLevelException extends CompilationError { | 
 |  | 
 |   public ApiLevelException( | 
 |       AndroidApiLevel minApiLevel, String unsupportedFeatures, String sourceString) { | 
 |     super(makeMessage(minApiLevel, unsupportedFeatures, sourceString)); | 
 |     assert minApiLevel != null; | 
 |     assert unsupportedFeatures != null; | 
 |   } | 
 |  | 
 |   private static String makeMessage( | 
 |       AndroidApiLevel minApiLevel, String unsupportedFeatures, String sourceString) { | 
 |     String message = | 
 |         unsupportedFeatures | 
 |             + " are only supported starting with " | 
 |             + minApiLevel.getName() | 
 |             + " (--min-api " | 
 |             + minApiLevel.getLevel() | 
 |             + ")"; | 
 |     message = (sourceString != null) ? message + ": " + sourceString : message; | 
 |     return message; | 
 |   } | 
 | } |