Fix a problem with bogus template shadowing warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64230 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Douglas Gregor 2009-02-10 19:52:54 +00:00
Родитель d684b0027e
Коммит 68c6993141
2 изменённых файлов: 10 добавлений и 7 удалений

Просмотреть файл

@ -251,9 +251,12 @@ Parser::ParseTemplateTemplateParameter(unsigned Depth, unsigned Position) {
SourceLocation TemplateLoc = ConsumeToken();
TemplateParameterList TemplateParams;
SourceLocation LAngleLoc, RAngleLoc;
if(!ParseTemplateParameters(Depth + 1, TemplateParams, LAngleLoc,
RAngleLoc)) {
return 0;
{
ParseScope TemplateParmScope(this, Scope::TemplateParamScope);
if(!ParseTemplateParameters(Depth + 1, TemplateParams, LAngleLoc,
RAngleLoc)) {
return 0;
}
}
// Generate a meaningful error if the user forgot to put class before the

Просмотреть файл

@ -39,10 +39,10 @@ template<int N = 5, // expected-note{{previous default template argument define
int M> // expected-error{{template parameter missing a default argument}}
class B1n;
// FIXME: spurious "shadow" warning!
//template<template<class T> class = Y1,
// template<class T> class>
// class B1fixme;
// Check for bogus template parameter shadow warning.
template<template<class T> class,
template<class T> class>
class B1noshadow;
// C++ [temp.param]p10:
template<class T1, class T2 = int> class B2;