1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.build.config;
18 
19 import java.lang.reflect.Field;
20 import java.io.PrintStream;
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.List;
25 import java.util.Map;
26 
27 /**
28  * Error constants and error reporting.
29  * <p>
30  * <b>Naming Convention:</b>
31  * <ul>
32  *  <li>ERROR_ for Categories with isLevelSettable false and Level.ERROR
33  *  <li>WARNING_ for Categories with isLevelSettable true and default WARNING or HIDDEN
34  *  <li>Don't have isLevelSettable true and not ERROR. (The constructor asserts this).
35  * </ul>
36  */
37 public class Errors extends ErrorReporter {
38 
39     public final Category ERROR_COMMAND_LINE = new Category(1, false, Level.ERROR,
40             "Error on the command line.");
41 
42     public final Category WARNING_UNKNOWN_COMMAND_LINE_ERROR = new Category(2, true, Level.HIDDEN,
43             "Passing unknown errors on the command line.  Hidden by default for\n"
44             + "forward compatibility.");
45 
46     public final Category ERROR_KATI = new Category(3, false, Level.ERROR,
47             "Error executing or reading from Kati.");
48 
49     public final Category WARNING_DUMPCONFIG = new Category(4, true, Level.WARNING,
50             "Anomaly parsing the output of kati and dumpconfig.mk.");
51 
52     public final Category ERROR_DUMPCONFIG = new Category(5, false, Level.ERROR,
53             "Error parsing the output of kati and dumpconfig.mk.");
54 
55     public final Category WARNING_VARIABLE_RECURSION = new Category(6, true, Level.WARNING,
56             "Possible unsupported variable recursion.");
57 
58     // This could be a warning, but it's very likely that the data is corrupted somehow
59     // if we're seeing this.
60     public final Category ERROR_IMPROPER_PRODUCT_VAR_MARKER = new Category(7, true, Level.ERROR,
61             "Bad input from dumpvars causing corrupted product variables.");
62 
63     public final Category ERROR_MISSING_CONFIG_FILE = new Category(8, true, Level.ERROR,
64             "Unable to find config file.");
65 
66     public final Category ERROR_INFINITE_RECURSION = new Category(9, true, Level.ERROR,
67             "A file tries to inherit-product from itself or its own inherited products.");
68 
69     // TODO: This will become obsolete when it is possible to have starlark-based product
70     // config files.
71     public final Category WARNING_DIFFERENT_FROM_KATI = new Category(1000, true, Level.WARNING,
72             "The cross-check with the original kati implementation failed.");
73 
74 }
75