summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/Diagnostic.td22
-rw-r--r--clang/include/clang/Basic/DiagnosticCommonKinds.td6
-rw-r--r--clang/include/clang/Basic/DiagnosticLexKinds.td14
-rw-r--r--clang/include/clang/Basic/DiagnosticSemaKinds.td28
4 files changed, 43 insertions, 27 deletions
diff --git a/clang/include/clang/Basic/Diagnostic.td b/clang/include/clang/Basic/Diagnostic.td
index 12096347c85..2da2986c54e 100644
--- a/clang/include/clang/Basic/Diagnostic.td
+++ b/clang/include/clang/Basic/Diagnostic.td
@@ -26,25 +26,25 @@ def CLASS_WARNING : DiagClass;
def CLASS_EXTENSION : DiagClass;
def CLASS_ERROR : DiagClass;
+// Diagnostic Groups.
+class DiagGroup<string name>;
+class InGroup<DiagGroup Group> { DiagGroup Group = Group; }
+class IsGroup<string Name> { DiagGroup Group = DiagGroup<Name>; }
+
+def ImplicitFunctionDeclare : DiagGroup<"implicit-function-declaration">;
+def Trigraphs : DiagGroup<"trigraphs">;
-/*
-class Option<string name, list<OptionControlled> members> : OptionControlled {
- string Name = name;
- list<OptionControlled> Members = members;
-}
-// Definitions for options ("warning groups").
-include "DiagnosticOptions.td"
-*/
// All diagnostics emitted by the compiler are an indirect subclass of this.
class Diagnostic<string text, DiagClass DC, DiagMapping defaultmapping> {
/// Component is specified by the file with a big let directive.
- string Component = ?;
- string Text = text;
- DiagClass Class = DC;
+ string Component = ?;
+ string Text = text;
+ DiagClass Class = DC;
DiagMapping DefaultMapping = defaultmapping;
+ DiagGroup Group;
}
class Error<string str> : Diagnostic<str, CLASS_ERROR, MAP_ERROR>;
diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td
index 08c5b449987..1347293398b 100644
--- a/clang/include/clang/Basic/DiagnosticCommonKinds.td
+++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td
@@ -52,12 +52,14 @@ def note_invalid_subexpr_in_ice : Note<
"subexpression not valid in an integer constant expression">;
// Driver
-def pp_macro_not_used : Warning<"macro is not used">, DefaultIgnore;
+def pp_macro_not_used : Warning<"macro is not used">, DefaultIgnore,
+ IsGroup<"unused-macros">;
def err_pp_I_dash_not_supported : Error<
"-I- not supported, please use -iquote instead">;
def warn_pp_undef_identifier : Warning<
- "%0 is not defined, evaluates to 0">, DefaultIgnore;
+ "%0 is not defined, evaluates to 0">,
+ IsGroup<"undef">, DefaultIgnore;
}
diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td
index b13f8435196..586423bc265 100644
--- a/clang/include/clang/Basic/DiagnosticLexKinds.td
+++ b/clang/include/clang/Basic/DiagnosticLexKinds.td
@@ -23,11 +23,13 @@ def backslash_newline_space : Warning<
"backslash and newline separated by space">;
// Trigraphs.
-def trigraph_ignored : Warning<"trigraph ignored">;
+def trigraph_ignored : Warning<"trigraph ignored">, InGroup<Trigraphs>;
def trigraph_ignored_block_comment : Warning<
- "ignored trigraph would end block comment">;
-def trigraph_ends_block_comment : Warning<"trigraph ends block comment">;
-def trigraph_converted : Warning<"trigraph converted to '%0' character">;
+ "ignored trigraph would end block comment">, InGroup<Trigraphs>;
+def trigraph_ends_block_comment : Warning<"trigraph ends block comment">,
+ InGroup<Trigraphs>;
+def trigraph_converted : Warning<"trigraph converted to '%0' character">,
+ InGroup<Trigraphs>;
def ext_multi_line_bcpl_comment : Extension<"multi-line // comment">;
def ext_bcpl_comment : Extension<
@@ -112,8 +114,10 @@ def ext_pp_ident_directive : Extension<"#ident is a language extension">;
def ext_pp_include_next_directive : Extension<
"#include_next is a language extension">;
def ext_pp_warning_directive : Extension<"#warning is a language extension">;
+
def ext_pp_extra_tokens_at_eol : ExtWarn<
- "extra tokens at end of #%0 directive">;
+ "extra tokens at end of #%0 directive">, IsGroup<"extra-tokens">;
+
def ext_pp_comma_expr : Extension<"comma operator in operand of #if">;
def ext_pp_bad_vaargs_use : Extension<
"__VA_ARGS__ can only appear in the expansion of a C99 variadic macro">;
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index dd2ea2171bf..dbb5e375283 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -76,8 +76,14 @@ def err_bad_variable_name : Error<
def err_parameter_name_omitted : Error<"parameter name omitted">;
def warn_decl_in_param_list : Warning<
"declaration of %0 will not be visible outside of this function">;
+
def warn_implicit_function_decl : Warning<
- "implicit declaration of function %0">, DefaultIgnore;
+ "implicit declaration of function %0">,
+ InGroup<ImplicitFunctionDeclare>, DefaultIgnore;
+def ext_implicit_function_decl : Extension<
+ "implicit declaration of function %0 is invalid in C99">,
+ InGroup<ImplicitFunctionDeclare>;
+
def err_ellipsis_first_arg : Error<
"ISO C requires a named argument before '...'">;
def err_declarator_need_ident : Error<"declarator requires an identifier">;
@@ -221,7 +227,8 @@ def error_duplicate_ivar_use : Error<
"synthesized properties %0 and %1 both claim ivar %2">;
def error_property_implemented : Error<"property %0 is already implemented">;
def warn_objc_property_attr_mutually_exclusive : Warning<
- "property attributes '%0' and '%1' are mutually exclusive">, DefaultIgnore;
+ "property attributes '%0' and '%1' are mutually exclusive">,
+ IsGroup<"readonly-setter-attrs">, DefaultIgnore;
// C++ declarations
def err_static_assert_expression_is_not_constant : Error<
@@ -718,12 +725,14 @@ def err_unexpected_namespace : Error<
"unexpected namespace name %0: expected expression">;
def err_undeclared_var_use : Error<"use of undeclared identifier %0">;
def err_undeclared_use : Error<"use of undeclared '%0'">;
-def warn_deprecated : Warning<"%0 is deprecated">;
+def warn_deprecated : Warning<"%0 is deprecated">,
+ IsGroup<"deprecated-declarations">;
def warn_unavailable : Warning<"%0 is unavailable">;
def note_unavailable_here : Note<
"function has been explicitly marked %select{unavailable|deleted}0 here">;
def warn_missing_prototype : Warning<
- "no previous prototype for function %0">, DefaultIgnore;
+ "no previous prototype for function %0">,
+ IsGroup<"missing-prototypes">, DefaultIgnore;
def err_redefinition : Error<"redefinition of %0">;
def err_static_non_static : Error<
"static declaration of %0 follows non-static declaration">;
@@ -819,8 +828,6 @@ def err_undeclared_label_use : Error<"use of undeclared label '%0'">;
def err_goto_into_scope : Error<"illegal jump (scoping violation)">;
-def ext_implicit_function_decl : Extension<
- "implicit declaration of function %0 is invalid in C99">;
def err_func_returning_array_function : Error<
"function cannot return array or function type %0">;
@@ -883,7 +890,8 @@ def err_offsetof_array_type : Error<"offsetof requires array type, %0 invalid">;
def ext_offsetof_extended_field_designator : Extension<
"using extended field designator is an extension">;
def warn_floatingpoint_eq : Warning<
- "comparing floating point with == or != is unsafe">, DefaultIgnore;
+ "comparing floating point with == or != is unsafe">,
+ IsGroup<"float-equal">, DefaultIgnore;
def err_typecheck_subscript_value : Error<
"subscripted value is neither array nor pointer">;
@@ -987,7 +995,8 @@ def err_builtin_direct_init_more_than_one_arg : Error<
def err_value_init_for_array_type : Error<
"array types cannot be value-initialized">;
def warn_printf_not_string_constant : Warning<
- "format string is not a string literal (potentially insecure)">;
+ "format string is not a string literal (potentially insecure)">,
+ IsGroup<"format-nonliteral">;
def err_unexpected_interface : Error<
"unexpected interface name %0: expected expression">;
@@ -1158,7 +1167,8 @@ def ext_typecheck_convert_int_pointer : ExtWarn<
def ext_typecheck_convert_pointer_void_func : Extension<
"%2 %1 converts between void* and function pointer, expected %0">;
def ext_typecheck_convert_incompatible_pointer_sign : ExtWarn<
- "pointer types point to integer types with different sign %2 %1, expected %0">;
+ "pointer types point to integer types with different sign %2 %1, expected %0">,
+ IsGroup<"pointer-sign">;
def ext_typecheck_convert_incompatible_pointer : ExtWarn<
"incompatible pointer types %2 %1, expected %0">;
def ext_typecheck_convert_discards_qualifiers : ExtWarn<
OpenPOWER on IntegriCloud