forked from OSchip/llvm-project
Add warning flag for "partial specialization is not more specialized than primary template" error (since Eigen hits it), and while I'm here also add a warning flag for "partial specialization is not usable because one or more of its parameters cannot be deduced" warning.
llvm-svn: 290625
This commit is contained in:
parent
b6d0b83cd2
commit
fa4a09d8af
|
@ -4043,14 +4043,16 @@ def err_partial_spec_args_match_primary_template : Error<
|
|||
"%select{class|variable}0 template partial specialization does not "
|
||||
"specialize any template argument; to %select{declare|define}1 the "
|
||||
"primary template, remove the template argument list">;
|
||||
def err_partial_spec_not_more_specialized_than_primary : Error<
|
||||
def ext_partial_spec_not_more_specialized_than_primary : ExtWarn<
|
||||
"%select{class|variable}0 template partial specialization is not "
|
||||
"more specialized than the primary template">;
|
||||
"more specialized than the primary template">, DefaultError,
|
||||
InGroup<DiagGroup<"invalid-partial-specialization">>;
|
||||
def note_partial_spec_not_more_specialized_than_primary : Note<"%0">;
|
||||
def warn_partial_specs_not_deducible : Warning<
|
||||
"%select{class|variable}0 template partial specialization contains "
|
||||
"%select{a template parameter|template parameters}1 that cannot be "
|
||||
"deduced; this partial specialization will never be used">;
|
||||
"deduced; this partial specialization will never be used">,
|
||||
InGroup<DiagGroup<"unusable-partial-specialization">>;
|
||||
def note_partial_spec_unused_parameter : Note<
|
||||
"non-deducible template parameter %0">;
|
||||
def err_partial_spec_ordering_ambiguous : Error<
|
||||
|
|
|
@ -2637,8 +2637,8 @@ static void checkMoreSpecializedThanPrimary(Sema &S, PartialSpecDecl *Partial) {
|
|||
|
||||
auto *Template = Partial->getSpecializedTemplate();
|
||||
S.Diag(Partial->getLocation(),
|
||||
diag::err_partial_spec_not_more_specialized_than_primary)
|
||||
<< /*variable template*/isa<VarTemplateDecl>(Template);
|
||||
diag::ext_partial_spec_not_more_specialized_than_primary)
|
||||
<< isa<VarTemplateDecl>(Template);
|
||||
|
||||
if (Info.hasSFINAEDiagnostic()) {
|
||||
PartialDiagnosticAt Diag = {SourceLocation(),
|
||||
|
|
|
@ -18,7 +18,7 @@ This test serves two purposes:
|
|||
|
||||
The list of warnings below should NEVER grow. It should gradually shrink to 0.
|
||||
|
||||
CHECK: Warnings without flags (79):
|
||||
CHECK: Warnings without flags (78):
|
||||
CHECK-NEXT: ext_excess_initializers
|
||||
CHECK-NEXT: ext_excess_initializers_in_char_array_initializer
|
||||
CHECK-NEXT: ext_expected_semi_decl_list
|
||||
|
@ -78,7 +78,6 @@ CHECK-NEXT: warn_not_compound_assign
|
|||
CHECK-NEXT: warn_objc_property_copy_missing_on_block
|
||||
CHECK-NEXT: warn_objc_protocol_qualifier_missing_id
|
||||
CHECK-NEXT: warn_on_superclass_use
|
||||
CHECK-NEXT: warn_partial_specs_not_deducible
|
||||
CHECK-NEXT: warn_pp_convert_to_positive
|
||||
CHECK-NEXT: warn_pp_expr_overflow
|
||||
CHECK-NEXT: warn_pp_line_decimal
|
||||
|
|
Loading…
Reference in New Issue