mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 20:56:06 +00:00
Downgrade unnecessary "typename" from error to warning in Microsoft mode.
This fixes 1 error when parsing MSVC 2008 headers with clang. Must "return true;" even if it is a warning because the rest of the code path assumes that SS is set to something. The parser will get back on its feet and continue parsing the rest of the declaration correctly so it is not a problem. llvm-svn: 130088
This commit is contained in:
parent
27337a8800
commit
dd876125df
@ -404,6 +404,8 @@ def err_out_of_line_type_names_constructor : Error<
|
||||
|
||||
def err_expected_qualified_after_typename : Error<
|
||||
"expected a qualified name after 'typename'">;
|
||||
def warn_expected_qualified_after_typename : ExtWarn<
|
||||
"expected a qualified name after 'typename'">;
|
||||
def err_expected_semi_after_tagdecl : Error<
|
||||
"expected ';' after %0">;
|
||||
|
||||
|
@ -1090,7 +1090,10 @@ bool Parser::TryAnnotateTypeOrScopeToken(bool EnteringContext) {
|
||||
0, /*IsTypename*/true))
|
||||
return true;
|
||||
if (!SS.isSet()) {
|
||||
Diag(Tok.getLocation(), diag::err_expected_qualified_after_typename);
|
||||
if (getLang().Microsoft)
|
||||
Diag(Tok.getLocation(), diag::warn_expected_qualified_after_typename);
|
||||
else
|
||||
Diag(Tok.getLocation(), diag::err_expected_qualified_after_typename);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,19 @@ void f(){
|
||||
typename C1<T>:: /*template*/ Iterator<0> Mypos; // expected-warning {{use 'template' keyword to treat 'Iterator' as a dependent template name}}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class AAAA { };
|
||||
|
||||
template <class T>
|
||||
void redundant_typename() {
|
||||
typename T t;// expected-warning {{expected a qualified name after 'typename'}}
|
||||
typename AAAA a;// expected-warning {{expected a qualified name after 'typename'}}
|
||||
t = 3;
|
||||
}
|
||||
|
||||
int main() {
|
||||
redundant_typename<int>();
|
||||
f<int>();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user