]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/TableGen/DiagnosticBase.inc
Vendor import of clang release_38 branch r258549:
[FreeBSD/FreeBSD.git] / test / TableGen / DiagnosticBase.inc
1 // Define the diagnostic mappings.
2 class DiagMapping;
3 def MAP_IGNORE  : DiagMapping;
4 def MAP_WARNING : DiagMapping;
5 def MAP_ERROR   : DiagMapping;
6 def MAP_FATAL   : DiagMapping;
7
8 // Define the diagnostic classes.
9 class DiagClass;
10 def CLASS_NOTE      : DiagClass;
11 def CLASS_WARNING   : DiagClass;
12 def CLASS_EXTENSION : DiagClass;
13 def CLASS_ERROR     : DiagClass;
14
15 class DiagGroup<string Name, list<DiagGroup> subgroups = []> {
16   string GroupName = Name;
17   list<DiagGroup> SubGroups = subgroups;
18   string CategoryName = "";
19 }
20 class InGroup<DiagGroup G> { DiagGroup Group = G; }
21
22 // All diagnostics emitted by the compiler are an indirect subclass of this.
23 class Diagnostic<string text, DiagClass DC, DiagMapping defaultmapping> {
24   string      Text = text;
25   DiagClass   Class = DC;
26   DiagMapping DefaultMapping = defaultmapping;
27   DiagGroup   Group;
28   string      CategoryName = "";
29 }
30
31 class Error<string str>     : Diagnostic<str, CLASS_ERROR, MAP_ERROR>;
32 class Warning<string str>   : Diagnostic<str, CLASS_WARNING, MAP_WARNING>;
33 class Extension<string str> : Diagnostic<str, CLASS_EXTENSION, MAP_IGNORE>;
34 class ExtWarn<string str>   : Diagnostic<str, CLASS_EXTENSION, MAP_WARNING>;
35 class Note<string str>      : Diagnostic<str, CLASS_NOTE, MAP_FATAL/*ignored*/>;