forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
| // Define the diagnostic mappings.
 | |
| class DiagMapping;
 | |
| def MAP_IGNORE  : DiagMapping;
 | |
| def MAP_WARNING : DiagMapping;
 | |
| def MAP_ERROR   : DiagMapping;
 | |
| def MAP_FATAL   : DiagMapping;
 | |
| 
 | |
| // Define the diagnostic classes.
 | |
| class DiagClass;
 | |
| def CLASS_NOTE      : DiagClass;
 | |
| def CLASS_WARNING   : DiagClass;
 | |
| def CLASS_EXTENSION : DiagClass;
 | |
| def CLASS_ERROR     : DiagClass;
 | |
| 
 | |
| class DiagGroup<string Name, list<DiagGroup> subgroups = []> {
 | |
|   string GroupName = Name;
 | |
|   list<DiagGroup> SubGroups = subgroups;
 | |
|   string CategoryName = "";
 | |
| }
 | |
| class InGroup<DiagGroup G> { DiagGroup Group = G; }
 | |
| 
 | |
| // All diagnostics emitted by the compiler are an indirect subclass of this.
 | |
| class Diagnostic<string text, DiagClass DC, DiagMapping defaultmapping> {
 | |
|   string      Text = text;
 | |
|   DiagClass   Class = DC;
 | |
|   DiagMapping DefaultMapping = defaultmapping;
 | |
|   DiagGroup   Group;
 | |
|   string      CategoryName = "";
 | |
| }
 | |
| 
 | |
| class Error<string str>     : Diagnostic<str, CLASS_ERROR, MAP_ERROR>;
 | |
| class Warning<string str>   : Diagnostic<str, CLASS_WARNING, MAP_WARNING>;
 | |
| class Extension<string str> : Diagnostic<str, CLASS_EXTENSION, MAP_IGNORE>;
 | |
| class ExtWarn<string str>   : Diagnostic<str, CLASS_EXTENSION, MAP_WARNING>;
 | |
| class Note<string str>      : Diagnostic<str, CLASS_NOTE, MAP_FATAL/*ignored*/>;
 |