diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2011-04-19 21:42:37 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2011-04-19 21:42:37 +0000 |
commit | 2b059998f7a6ce18dadd8d11b396825d79cdd27a (patch) | |
tree | c86ad65bbaaf725363d57cdd03de77da063ab51d | |
parent | ecf1356057de02d8ce1911fb78fd17d968b47f38 (diff) | |
download | bcm5719-llvm-2b059998f7a6ce18dadd8d11b396825d79cdd27a.tar.gz bcm5719-llvm-2b059998f7a6ce18dadd8d11b396825d79cdd27a.zip |
Avoid superfluous warning after an error is detcted and reported.
// rdar://9132143
llvm-svn: 129822
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 5 | ||||
-rw-r--r-- | clang/test/Parser/cxx-decl.cpp | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index ee76cc73a52..702f8c7cfb1 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -1735,6 +1735,8 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS, DS.getStorageClassSpec() == DeclSpec::SCS_typedef) { PrevSpec = ""; // Not used by the diagnostic. DiagID = diag::err_bool_redeclaration; + // For better error recovery. + Tok.setKind(tok::identifier); isInvalid = true; } else { isInvalid = DS.SetTypeSpecType(DeclSpec::TST_bool, Loc, PrevSpec, @@ -1856,7 +1858,8 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS, } DS.SetRangeEnd(Tok.getLocation()); - ConsumeToken(); + if (DiagID != diag::err_bool_redeclaration) + ConsumeToken(); } } diff --git a/clang/test/Parser/cxx-decl.cpp b/clang/test/Parser/cxx-decl.cpp index 6d720d36a25..70eff973e0e 100644 --- a/clang/test/Parser/cxx-decl.cpp +++ b/clang/test/Parser/cxx-decl.cpp @@ -7,8 +7,8 @@ struct Type { }; // rdar://8365458 -typedef char bool; // expected-error {{redeclaration of C++ built-in type 'bool'}} \ - // expected-warning {{declaration does not declare anything}} +// rdar://9132143 +typedef char bool; // expected-error {{redeclaration of C++ built-in type 'bool'}} // PR4451 - We should recover well from the typo of '::' as ':' in a2. namespace y { |