forked from OSchip/llvm-project
Slight tweak to alias template error handling: don't guess that a template-id in an alias declaration was meant to be a specialization. Use a generic, but more accurate, diagnostic.
llvm-svn: 130961
This commit is contained in:
parent
b79646cb2e
commit
14034026d6
|
@ -396,7 +396,8 @@ Decl *Parser::ParseUsingDeclaration(unsigned Context,
|
|||
|
||||
// Type alias templates cannot be specialized.
|
||||
int SpecKind = -1;
|
||||
if (Name.getKind() == UnqualifiedId::IK_TemplateId)
|
||||
if (TemplateInfo.Kind == ParsedTemplateInfo::Template &&
|
||||
Name.getKind() == UnqualifiedId::IK_TemplateId)
|
||||
SpecKind = 0;
|
||||
if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitSpecialization)
|
||||
SpecKind = 1;
|
||||
|
|
|
@ -4,5 +4,4 @@ template<typename T> using A = int;
|
|||
template<typename T> using A<T*> = char; // expected-error {{partial specialization of alias templates is not permitted}}
|
||||
template<> using A<char> = char; // expected-error {{explicit specialization of alias templates is not permitted}}
|
||||
template using A<char> = char; // expected-error {{explicit instantiation of alias templates is not permitted}}
|
||||
// Best guess as to what the user was trying to do: missing template<>.
|
||||
using A<char> = char; // expected-error {{partial specialization of alias templates is not permitted}}
|
||||
using A<char> = char; // expected-error {{name defined in alias declaration must be an identifier}}
|
||||
|
|
Loading…
Reference in New Issue