Simplify diagnostic tag type using the token kind formatter

As far as the parser is concerned the tag type is always a keyword.

llvm-svn: 198606
This commit is contained in:
Alp Toker 2014-01-06 12:54:41 +00:00
parent addd3669d4
commit 01d65e1387
2 changed files with 3 additions and 9 deletions

View File

@ -627,8 +627,7 @@ def err_typename_refers_to_non_type_template : Error<
def err_expected_type_name_after_typename : Error<
"expected an identifier or template-id after '::'">;
def err_explicit_spec_non_template : Error<
"explicit %select{specialization|instantiation}0 of non-template "
"%select{class|struct|union|interface}1 %2">;
"explicit %select{specialization|instantiation}0 of non-template %1 %2">;
def err_default_template_template_parameter_not_template : Error<
"default template argument for a template template parameter must be a class "

View File

@ -1237,13 +1237,8 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind,
}
Diag(NameLoc, diag::err_explicit_spec_non_template)
<< (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation)
<< (TagType == DeclSpec::TST_class? 0
: TagType == DeclSpec::TST_struct? 1
: TagType == DeclSpec::TST_union? 2
: 3)
<< Name
<< SourceRange(LAngleLoc, RAngleLoc);
<< (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation)
<< TagTokKind << Name << SourceRange(LAngleLoc, RAngleLoc);
// Strip off the last template parameter list if it was empty, since
// we've removed its template argument list.