diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-08-08 23:04:35 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-08-08 23:04:35 +0000 |
commit | 89b1f2c7e101f2263b35d0ea5013ed7a39015b26 (patch) | |
tree | 02fc081479f7a7f5e0b4e6daa3756d6ca7c5ef9c /clang/lib/Parse/RAIIObjectsForParser.h | |
parent | fcde4fad2beacb271a9fcf921daba93c5bd06919 (diff) | |
download | bcm5719-llvm-89b1f2c7e101f2263b35d0ea5013ed7a39015b26.tar.gz bcm5719-llvm-89b1f2c7e101f2263b35d0ea5013ed7a39015b26.zip |
Handle deprecation diagnostics correctly for C struct fields and Objective-C properties/ivars. <rdar://problem/6642337>.
llvm-svn: 161534
Diffstat (limited to 'clang/lib/Parse/RAIIObjectsForParser.h')
-rw-r--r-- | clang/lib/Parse/RAIIObjectsForParser.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/clang/lib/Parse/RAIIObjectsForParser.h b/clang/lib/Parse/RAIIObjectsForParser.h index e13c4cfeb31..455c4af2ffa 100644 --- a/clang/lib/Parse/RAIIObjectsForParser.h +++ b/clang/lib/Parse/RAIIObjectsForParser.h @@ -218,6 +218,28 @@ namespace clang { } }; + /// A class for parsing a field declarator. + class ParsingFieldDeclarator : public FieldDeclarator { + ParsingDeclRAIIObject ParsingRAII; + + public: + ParsingFieldDeclarator(Parser &P, const ParsingDeclSpec &DS) + : FieldDeclarator(DS), ParsingRAII(P, &DS.getDelayedDiagnosticPool()) { + } + + const ParsingDeclSpec &getDeclSpec() const { + return static_cast<const ParsingDeclSpec&>(D.getDeclSpec()); + } + + ParsingDeclSpec &getMutableDeclSpec() const { + return const_cast<ParsingDeclSpec&>(getDeclSpec()); + } + + void complete(Decl *D) { + ParsingRAII.complete(D); + } + }; + /// ExtensionRAIIObject - This saves the state of extension warnings when /// constructed and disables them. When destructed, it restores them back to /// the way they used to be. This is used to handle __extension__ in the |