summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/RAIIObjectsForParser.h
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2012-08-08 23:04:35 +0000
committerEli Friedman <eli.friedman@gmail.com>2012-08-08 23:04:35 +0000
commit89b1f2c7e101f2263b35d0ea5013ed7a39015b26 (patch)
tree02fc081479f7a7f5e0b4e6daa3756d6ca7c5ef9c /clang/lib/Parse/RAIIObjectsForParser.h
parentfcde4fad2beacb271a9fcf921daba93c5bd06919 (diff)
downloadbcm5719-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.h22
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
OpenPOWER on IntegriCloud