diff options
author | John McCall <rjmccall@apple.com> | 2009-08-03 20:12:06 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-08-03 20:12:06 +0000 |
commit | fec54013fcd0eb72642741584ca04c1bc292bef8 (patch) | |
tree | 296d1773fbdb933456493aefe724350b35eb2227 /lib/Parse/ParseDeclCXX.cpp | |
parent | d1e1ef3b0a54d7e1e9247326a4dab3ec0d4b8ce8 (diff) |
Refactor methods on DeclSpec to take a diagnostic& parameter, and reflect this
elsewhere. Very slightly decouples DeclSpec users from knowing the exact
diagnostics to report, and makes it easier to provide different diagnostics in
some places.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77990 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseDeclCXX.cpp')
-rw-r--r-- | lib/Parse/ParseDeclCXX.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp index 176cb35889..c0df8a59f7 100644 --- a/lib/Parse/ParseDeclCXX.cpp +++ b/lib/Parse/ParseDeclCXX.cpp @@ -410,10 +410,11 @@ void Parser::ParseDecltypeSpecifier(DeclSpec &DS) { return; const char *PrevSpec = 0; + unsigned DiagID; // Check for duplicate type specifiers (e.g. "int decltype(a)"). if (DS.SetTypeSpecType(DeclSpec::TST_decltype, StartLoc, PrevSpec, - Result.release())) - Diag(StartLoc, diag::err_invalid_decl_spec_combination) << PrevSpec; + DiagID, Result.release())) + Diag(StartLoc, DiagID) << PrevSpec; } /// ParseClassName - Parse a C++ class-name, which names a class. Note @@ -716,15 +717,16 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind, Diag(Tok, diag::err_expected_lbrace); } - const char *PrevSpec = 0; if (TagOrTempResult.isInvalid()) { DS.SetTypeSpecError(); return; } - if (DS.SetTypeSpecType(TagType, StartLoc, PrevSpec, + const char *PrevSpec = 0; + unsigned DiagID; + if (DS.SetTypeSpecType(TagType, StartLoc, PrevSpec, DiagID, TagOrTempResult.get().getAs<void>(), Owned)) - Diag(StartLoc, diag::err_invalid_decl_spec_combination) << PrevSpec; + Diag(StartLoc, DiagID) << PrevSpec; if (DS.isFriendSpecified()) Actions.ActOnFriendDecl(CurScope, DS.getFriendSpecLoc(), |