| // 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; |
| } |
| |
| public 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; |
| } |
| } |