Changes in src/Common/SemanticError.h [9dc31c10:4358c1e]
- File:
-
- 1 edited
-
src/Common/SemanticError.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/SemanticError.h
r9dc31c10 r4358c1e 7 7 // SemanticError.h -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Thierry Delisle 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 18 16:28:16201813 // Update Count : 1812 // Last Modified On : Wed May 16 15:01:23 2018 13 // Update Count : 30 14 14 // 15 15 … … 17 17 18 18 #include "ErrorObjects.h" 19 #include <cstring> 19 20 20 21 //----------------------------------------------------------------------------- 21 22 // Errors 23 24 extern bool SemanticErrorThrow; 22 25 23 26 __attribute__((noreturn)) void SemanticError( CodeLocation location, std::string error ); … … 36 39 // Warnings 37 40 38 constexpr const char * const WarningFormats[] = { 39 "self assignment of expression: %s", 40 "rvalue to reference conversion of rvalue: %s", 41 "questionable use of type qualifier %s with %s", 41 enum class Severity { 42 Suppress, 43 Warn, 44 Error, 45 Critical 46 }; 47 48 struct WarningData { 49 const char * const name; 50 const char * const message; 51 const Severity default_severity; 52 }; 53 54 constexpr WarningData WarningFormats[] = { 55 {"self-assign" , "self assignment of expression: %s" , Severity::Warn}, 56 {"reference-conversion" , "rvalue to reference conversion of rvalue: %s" , Severity::Warn}, 57 {"qualifiers-zero_t-one_t", "questionable use of type qualifier %s with %s", Severity::Warn}, 42 58 }; 43 59 … … 54 70 ); 55 71 56 // ## used here to allow empty __VA_ARGS__ 57 #define SemanticWarning(loc, id, ...) SemanticWarningImpl(loc, id, WarningFormats[(int)id], ## __VA_ARGS__) 72 #define SemanticWarning(loc, id, ...) SemanticWarningImpl(loc, id, WarningFormats[(int)id].message, __VA_ARGS__) 58 73 59 74 void SemanticWarningImpl (CodeLocation loc, Warning warn, const char * const fmt, ...) __attribute__((format(printf, 3, 4))); 60 75 76 void SemanticWarning_SuppressAll (); 77 void SemanticWarning_EnableAll (); 78 void SemanticWarning_WarningAsError(); 79 void SemanticWarning_Set (const char * const name, Severity s); 80 81 // SKULLDUGGERY: cfa.cc is built before SemanticError.cc but needs this routine. 82 static inline bool SemanticWarning_Exist(const char * const name) { 83 for ( const auto & w : WarningFormats ) { 84 if ( std::strcmp( name, w.name ) == 0 ) return true; 85 } 86 return false; 87 } 61 88 62 89 //-----------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.