From: Richard Trieu Date: Fri, 14 Dec 2018 03:35:10 +0000 (+0000) Subject: Fix up diagnostics. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c18971ee2305995d7b953dac2e6a65304ba95408;p=clang Fix up diagnostics. Move some diagnostics around between Diagnostic*Kinds.td files. Diagnostics used in multiple places were moved to DiagnosticCommonKinds.td. Diagnostics listed in the wrong place (ie, Sema diagnostics listed in DiagnosticsParseKinds.td) were moved to the correct places. One diagnostic split into two so that the diagnostic string is in the .td file instead of in code. Cleaned up the diagnostic includes after all the changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349125 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticASTKinds.td b/include/clang/Basic/DiagnosticASTKinds.td index e98e48931f..c39673a44a 100644 --- a/include/clang/Basic/DiagnosticASTKinds.td +++ b/include/clang/Basic/DiagnosticASTKinds.td @@ -314,4 +314,34 @@ def err_odr_non_type_parameter_type_inconsistent : Error< "non-type template parameter declared with incompatible types in different " "translation units (%0 vs. %1)">; def err_unsupported_ast_node: Error<"cannot import unsupported AST node %0">; + +def remark_sanitize_address_insert_extra_padding_accepted : Remark< + "-fsanitize-address-field-padding applied to %0">, ShowInSystemHeader, + InGroup; +def remark_sanitize_address_insert_extra_padding_rejected : Remark< + "-fsanitize-address-field-padding ignored for %0 because it " + "%select{is not C++|is packed|is a union|is trivially copyable|" + "has trivial destructor|is standard layout|is in a blacklisted file|" + "is blacklisted}1">, ShowInSystemHeader, + InGroup; + +def warn_npot_ms_struct : Warning< + "ms_struct may not produce Microsoft-compatible layouts with fundamental " + "data types with sizes that aren't a power of two">, + DefaultError, InGroup; + +// -Wpadded, -Wpacked +def warn_padded_struct_field : Warning< + "padding %select{struct|interface|class}0 %1 with %2 " + "%select{byte|bit}3%s2 to align %4">, + InGroup, DefaultIgnore; +def warn_padded_struct_anon_field : Warning< + "padding %select{struct|interface|class}0 %1 with %2 " + "%select{byte|bit}3%s2 to align anonymous bit-field">, + InGroup, DefaultIgnore; +def warn_padded_struct_size : Warning< + "padding size of %0 with %1 %select{byte|bit}2%s1 to alignment boundary">, + InGroup, DefaultIgnore; +def warn_unnecessary_packed : Warning< + "packed attribute is unnecessary for %0">, InGroup, DefaultIgnore; } diff --git a/include/clang/Basic/DiagnosticCommonKinds.td b/include/clang/Basic/DiagnosticCommonKinds.td index d1e7c57852..5a3378c869 100644 --- a/include/clang/Basic/DiagnosticCommonKinds.td +++ b/include/clang/Basic/DiagnosticCommonKinds.td @@ -131,6 +131,36 @@ def err_nullability_conflicting : Error< } +// OpenCL Section 6.8.g +def err_opencl_unknown_type_specifier : Error< + "OpenCL %select{C|C++}0 version %1 does not support the '%2' " + "%select{type qualifier|storage class specifier}3">; + +def warn_unknown_attribute_ignored : Warning< + "unknown attribute %0 ignored">, InGroup; +def err_use_of_tag_name_without_tag : Error< + "must use '%1' tag to refer to type %0%select{| in this scope}2">; + +def duplicate_declspec : TextSubstitution< + "duplicate '%0' declaration specifier">; + +def ext_duplicate_declspec : Extension<"%sub{duplicate_declspec}0">, + InGroup; +def ext_warn_duplicate_declspec : ExtWarn<"%sub{duplicate_declspec}0">, + InGroup; +def warn_duplicate_declspec : Warning<"%sub{duplicate_declspec}0">, + InGroup; + +def err_friend_decl_spec : Error<"'%0' is invalid in friend declarations">; + +def err_invalid_member_in_interface : Error< + "%select{data member |non-public member function |static member function |" + "user-declared constructor|user-declared destructor|operator |" + "nested class }0%1 is not permitted within an interface type">; + +def err_attribute_uuid_malformed_guid : Error< + "uuid attribute contains a malformed GUID">; + // Sema && Lex def ext_c99_longlong : Extension< "'long long' is an extension when C99 mode is not enabled">, @@ -195,6 +225,10 @@ let CategoryName = "Inline Assembly Issue" in { "invalid type %0 in asm input for constraint '%1'">; } +// Sema && Serialization +def warn_dup_category_def : Warning< + "duplicate definition of category %1 on interface %0">; + // Targets def err_target_unknown_triple : Error< diff --git a/include/clang/Basic/DiagnosticCrossTUKinds.td b/include/clang/Basic/DiagnosticCrossTUKinds.td index 877ac3d575..9c432457df 100644 --- a/include/clang/Basic/DiagnosticCrossTUKinds.td +++ b/include/clang/Basic/DiagnosticCrossTUKinds.td @@ -9,6 +9,9 @@ let Component = "CrossTU" in { +def err_ctu_error_opening : Error< + "error opening '%0': required by the CrossTU functionality">; + def err_fnmap_parsing : Error< "error parsing index file: '%0' line: %1 'UniqueID filename' format " "expected">; diff --git a/include/clang/Basic/DiagnosticFrontendKinds.td b/include/clang/Basic/DiagnosticFrontendKinds.td index 1186844b3e..b2fcb9ca14 100644 --- a/include/clang/Basic/DiagnosticFrontendKinds.td +++ b/include/clang/Basic/DiagnosticFrontendKinds.td @@ -63,16 +63,6 @@ def note_fe_backend_invalid_loc : Note<"could " def err_fe_backend_unsupported : Error<"%0">, BackendInfo; -def remark_sanitize_address_insert_extra_padding_accepted : Remark< - "-fsanitize-address-field-padding applied to %0">, ShowInSystemHeader, - InGroup; -def remark_sanitize_address_insert_extra_padding_rejected : Remark< - "-fsanitize-address-field-padding ignored for %0 because it " - "%select{is not C++|is packed|is a union|is trivially copyable|" - "has trivial destructor|is standard layout|is in a blacklisted file|" - "is blacklisted}1">, ShowInSystemHeader, - InGroup; - def err_fe_invalid_code_complete_file : Error< "cannot locate code-completion file %0">, DefaultFatal; def err_fe_stdout_binary : Error<"unable to change standard output to binary">, diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index 3706b40424..ec07bb5c4f 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -343,6 +343,10 @@ def err_expected_parentheses_around_typename : Error< def err_expected_case_before_expression: Error< "expected 'case' keyword before expression">; +def ext_warn_gnu_final : ExtWarn< + "__final is a GNU extension, consider using C++11 final">, + InGroup; + // Declarations. def err_typename_requires_specqual : Error< "type name requires a specifier or qualifier">; @@ -370,6 +374,12 @@ def ext_c11_static_assert : Extension< def warn_cxx98_compat_static_assert : Warning< "static_assert declarations are incompatible with C++98">, InGroup, DefaultIgnore; +def ext_static_assert_no_message : ExtWarn< + "static_assert with no message is a C++17 extension">, InGroup; +def warn_cxx14_compat_static_assert_no_message : Warning< + "static_assert with no message is incompatible with C++ standards before " + "C++17">, + DefaultIgnore, InGroup; def err_function_definition_not_allowed : Error< "function definition is not allowed here">; def err_expected_end_of_enumerator : Error< @@ -500,6 +510,13 @@ def err_dynamic_and_noexcept_specification : Error< "cannot have both throw() and noexcept() clause on the same function">; def err_except_spec_unparsed : Error< "unexpected end of exception specification">; +def ext_dynamic_exception_spec : ExtWarn< + "ISO C++17 does not allow dynamic exception specifications">, + InGroup, DefaultError; +def warn_exception_spec_deprecated : Warning< + "dynamic exception specifications are deprecated">, + InGroup, DefaultIgnore; +def note_exception_spec_deprecated : Note<"use '%0' instead">; def warn_cxx98_compat_noexcept_decl : Warning< "noexcept specifications are incompatible with C++98">, InGroup, DefaultIgnore; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 189cc6f70c..c11b6db488 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -192,12 +192,6 @@ def ext_flexible_array_init : Extension< "flexible array initialization is a GNU extension">, InGroup; // Declarations. -def ext_duplicate_declspec : Extension<"duplicate '%0' declaration specifier">, - InGroup; -def ext_warn_duplicate_declspec : ExtWarn<"duplicate '%0' declaration specifier">, - InGroup; -def warn_duplicate_declspec : Warning<"duplicate '%0' declaration specifier">, - InGroup; def ext_plain_complex : ExtWarn< "plain '_Complex' requires a type specifier; assuming '_Complex double'">; def ext_imaginary_constant : Extension< @@ -211,7 +205,6 @@ def err_invalid_sign_spec : Error<"'%0' cannot be signed or unsigned">; def err_invalid_width_spec : Error< "'%select{|short|long|long long}0 %1' is invalid">; def err_invalid_complex_spec : Error<"'_Complex %0' is invalid">; -def err_friend_decl_spec : Error<"'%0' is invalid in friend declarations">; def ext_auto_type_specifier : ExtWarn< "'auto' type specifier is a C++11 extension">, InGroup; @@ -252,9 +245,6 @@ def err_invalid_vector_long_double_decl_spec : Error< def warn_vector_long_decl_spec_combination : Warning< "Use of 'long' with '__vector' is deprecated">, InGroup; -def err_use_of_tag_name_without_tag : Error< - "must use '%1' tag to refer to type %0%select{| in this scope}2">; - def err_redeclaration_different_type : Error< "redeclaration of %0 with a different type%diff{: $ vs $|}1,2">; def err_bad_variable_name : Error< @@ -530,13 +520,6 @@ def warn_access_decl_deprecated : Warning< def err_access_decl : Error< "ISO C++11 does not allow access declarations; " "use using declarations instead">; -def ext_dynamic_exception_spec : ExtWarn< - "ISO C++17 does not allow dynamic exception specifications">, - InGroup, DefaultError; -def warn_exception_spec_deprecated : Warning< - "dynamic exception specifications are deprecated">, - InGroup, DefaultIgnore; -def note_exception_spec_deprecated : Note<"use '%0' instead">; def warn_deprecated_copy_operation : Warning< "definition of implicit copy %select{constructor|assignment operator}1 " "for %0 is deprecated because it has a user-declared " @@ -791,10 +774,6 @@ def warn_cxx_ms_struct : Warning<"ms_struct may not produce Microsoft-compatible layouts for classes " "with base classes or virtual functions">, DefaultError, InGroup; -def warn_npot_ms_struct : - Warning<"ms_struct may not produce Microsoft-compatible layouts with fundamental " - "data types with sizes that aren't a power of two">, - DefaultError, InGroup; def err_section_conflict : Error<"%0 causes a section type conflict with %1">; def err_no_base_classes : Error<"invalid use of '__super', %0 has no base classes">; def err_invalid_super_scope : Error<"invalid use of '__super', " @@ -923,8 +902,6 @@ def err_objc_runtime_visible_subclass : Error< "Objective-C runtime">; def note_objc_needs_superclass : Note< "add a super class to fix this problem">; -def warn_dup_category_def : Warning< - "duplicate definition of category %1 on interface %0">; def err_conflicting_super_class : Error<"conflicting super class name %0">; def err_dup_implementation_class : Error<"reimplementation of class %0">; def err_dup_implementation_category : Error< @@ -1284,11 +1261,6 @@ def err_static_assert_expression_is_not_constant : Error< def err_static_assert_failed : Error<"static_assert failed%select{ %1|}0">; def err_static_assert_requirement_failed : Error< "static_assert failed due to requirement '%0'%select{ %2|}1">; -def ext_static_assert_no_message : ExtWarn< - "static_assert with no message is a C++17 extension">, InGroup; -def warn_cxx14_compat_static_assert_no_message : Warning< - "static_assert with no message is incompatible with C++ standards before C++17">, - DefaultIgnore, InGroup; def ext_inline_variable : ExtWarn< "inline variables are a C++17 extension">, InGroup; @@ -1361,10 +1333,6 @@ def ext_friend_tag_redecl_outside_namespace : ExtWarn< InGroup; def err_pure_friend : Error<"friend declaration cannot have a pure-specifier">; -def err_invalid_member_in_interface : Error< - "%select{data member |non-public member function |static member function |" - "user-declared constructor|user-declared destructor|operator |" - "nested class }0%1 is not permitted within an interface type">; def err_invalid_base_in_interface : Error< "interface type cannot inherit from " "%select{struct|non-public interface|class}0 %1">; @@ -2566,8 +2534,6 @@ def err_attribute_argument_out_of_bounds : Error< "%0 attribute parameter %1 is out of bounds">; def err_attribute_only_once_per_parameter : Error< "%0 attribute can only be applied once per parameter">; -def err_attribute_uuid_malformed_guid : Error< - "uuid attribute contains a malformed GUID">; def err_mismatched_uuid : Error<"uuid does not match previous declaration">; def note_previous_uuid : Note<"previous uuid specified here">; def warn_attribute_pointers_only : Warning< @@ -2791,8 +2757,6 @@ def warn_nocf_check_attribute_ignored : def warn_attribute_after_definition_ignored : Warning< "attribute %0 after definition is ignored">, InGroup; -def warn_unknown_attribute_ignored : Warning< - "unknown attribute %0 ignored">, InGroup; def warn_cxx11_gnu_attribute_on_type : Warning< "attribute %0 ignored, because it cannot be applied to a type">, InGroup; @@ -4862,21 +4826,6 @@ def err_vm_func_decl : Error< def err_array_too_large : Error< "array is too large (%0 elements)">; -// -Wpadded, -Wpacked -def warn_padded_struct_field : Warning< - "padding %select{struct|interface|class}0 %1 with %2 " - "%select{byte|bit}3%s2 to align %4">, - InGroup, DefaultIgnore; -def warn_padded_struct_anon_field : Warning< - "padding %select{struct|interface|class}0 %1 with %2 " - "%select{byte|bit}3%s2 to align anonymous bit-field">, - InGroup, DefaultIgnore; -def warn_padded_struct_size : Warning< - "padding size of %0 with %1 %select{byte|bit}2%s1 to alignment boundary">, - InGroup, DefaultIgnore; -def warn_unnecessary_packed : Warning< - "packed attribute is unnecessary for %0">, InGroup, DefaultIgnore; - def err_typecheck_negative_array_size : Error<"array size is negative">; def warn_typecheck_function_qualifiers_ignored : Warning< "'%0' qualifier on function type %1 has no effect">, @@ -8692,11 +8641,6 @@ def err_opencl_multiple_access_qualifiers : Error< def note_opencl_typedef_access_qualifier : Note< "previously declared '%0' here">; -// OpenCL Section 6.8.g -def err_opencl_unknown_type_specifier : Error< - "OpenCL %select{C|C++}0 version %1 does not support the '%2' " - "%select{type qualifier|storage class specifier}3">; - // OpenCL v2.0 s6.12.5 Blocks restrictions def err_opencl_block_storage_type : Error< "the __block storage type is not permitted">; @@ -9458,10 +9402,6 @@ def warn_block_literal_qualifiers_on_omitted_return_type : Warning< "'%0' qualifier on omitted return type %1 has no effect">, InGroup; -def ext_warn_gnu_final : ExtWarn< - "__final is a GNU extension, consider using C++11 final">, - InGroup; - def warn_shadow_field : Warning< "%select{parameter|non-static data member}3 %0 %select{|of %1 }3shadows " "member inherited from type %2">, InGroup, DefaultIgnore; @@ -9534,4 +9474,5 @@ def warn_noderef_on_non_pointer_or_array : Warning< "'noderef' can only be used on an array or pointer type">, InGroup; def warn_noderef_to_dereferenceable_pointer : Warning< "casting to dereferenceable pointer removes 'noderef' attribute">, InGroup; + } // end of sema component. diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index f2e8c5014d..b32e5d9aa0 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -14,6 +14,7 @@ #include "clang/AST/Decl.h" #include "Linkage.h" #include "clang/AST/ASTContext.h" +#include "clang/AST/ASTDiagnostic.h" #include "clang/AST/ASTLambda.h" #include "clang/AST/ASTMutationListener.h" #include "clang/AST/CanonicalType.h" @@ -49,7 +50,6 @@ #include "clang/Basic/TargetCXXABI.h" #include "clang/Basic/TargetInfo.h" #include "clang/Basic/Visibility.h" -#include "clang/Frontend/FrontendDiagnostic.h" #include "llvm/ADT/APSInt.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/None.h" diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 751d9137e6..5a80016850 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -28,7 +28,6 @@ #include "clang/Basic/TargetInfo.h" #include "clang/Lex/Lexer.h" #include "clang/Lex/LiteralSupport.h" -#include "clang/Sema/SemaDiagnostic.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" #include diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index 673fa3f4ee..62dc22c814 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -9,6 +9,7 @@ #include "clang/AST/RecordLayout.h" #include "clang/AST/ASTContext.h" +#include "clang/AST/ASTDiagnostic.h" #include "clang/AST/Attr.h" #include "clang/AST/CXXInheritance.h" #include "clang/AST/Decl.h" @@ -16,7 +17,6 @@ #include "clang/AST/DeclObjC.h" #include "clang/AST/Expr.h" #include "clang/Basic/TargetInfo.h" -#include "clang/Sema/SemaDiagnostic.h" #include "llvm/ADT/SmallSet.h" #include "llvm/Support/Format.h" #include "llvm/Support/MathExtras.h" diff --git a/lib/CrossTU/CrossTranslationUnit.cpp b/lib/CrossTU/CrossTranslationUnit.cpp index f49db3a8bf..5286b90f93 100644 --- a/lib/CrossTU/CrossTranslationUnit.cpp +++ b/lib/CrossTU/CrossTranslationUnit.cpp @@ -17,7 +17,6 @@ #include "clang/CrossTU/CrossTUDiagnostic.h" #include "clang/Frontend/ASTUnit.h" #include "clang/Frontend/CompilerInstance.h" -#include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Frontend/TextDiagnosticPrinter.h" #include "clang/Index/USRGeneration.h" #include "llvm/ADT/Triple.h" @@ -250,8 +249,8 @@ CrossTranslationUnitContext::getCrossTUDefinition(const FunctionDecl *FD, void CrossTranslationUnitContext::emitCrossTUDiagnostics(const IndexError &IE) { switch (IE.getCode()) { case index_error_code::missing_index_file: - Context.getDiagnostics().Report(diag::err_fe_error_opening) - << IE.getFileName() << "required by the CrossTU functionality"; + Context.getDiagnostics().Report(diag::err_ctu_error_opening) + << IE.getFileName(); break; case index_error_code::invalid_index_format: Context.getDiagnostics().Report(diag::err_fnmap_parsing) diff --git a/lib/Frontend/DependencyFile.cpp b/lib/Frontend/DependencyFile.cpp index fdccd9134e..a03d4b79c8 100644 --- a/lib/Frontend/DependencyFile.cpp +++ b/lib/Frontend/DependencyFile.cpp @@ -17,7 +17,6 @@ #include "clang/Frontend/DependencyOutputOptions.h" #include "clang/Frontend/FrontendDiagnostic.h" #include "clang/Lex/DirectoryLookup.h" -#include "clang/Lex/LexDiagnostic.h" #include "clang/Lex/ModuleMap.h" #include "clang/Lex/PPCallbacks.h" #include "clang/Lex/Preprocessor.h" diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index caf443de63..7538b635f0 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -24,7 +24,6 @@ #include "clang/Sema/Lookup.h" #include "clang/Sema/ParsedTemplate.h" #include "clang/Sema/Scope.h" -#include "clang/Sema/SemaDiagnostic.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallString.h" diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp index 528e903ae7..02c73979ba 100644 --- a/lib/Parse/ParseDeclCXX.cpp +++ b/lib/Parse/ParseDeclCXX.cpp @@ -24,7 +24,6 @@ #include "clang/Sema/DeclSpec.h" #include "clang/Sema/ParsedTemplate.h" #include "clang/Sema/Scope.h" -#include "clang/Sema/SemaDiagnostic.h" #include "llvm/ADT/SmallString.h" using namespace clang; diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp index 30bf73ed3a..8c1710f660 100644 --- a/lib/Serialization/ASTReaderDecl.cpp +++ b/lib/Serialization/ASTReaderDecl.cpp @@ -48,7 +48,6 @@ #include "clang/Basic/SourceLocation.h" #include "clang/Basic/Specifiers.h" #include "clang/Sema/IdentifierResolver.h" -#include "clang/Sema/SemaDiagnostic.h" #include "clang/Serialization/ASTBitCodes.h" #include "clang/Serialization/ASTReader.h" #include "clang/Serialization/ContinuousRangeMap.h"