]> granicus.if.org Git - clang/commitdiff
Publish one more parser RAII for external use.
authorVassil Vassilev <v.g.vassilev@gmail.com>
Mon, 27 Mar 2017 13:11:32 +0000 (13:11 +0000)
committerVassil Vassilev <v.g.vassilev@gmail.com>
Mon, 27 Mar 2017 13:11:32 +0000 (13:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@298842 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Parse/RAIIObjectsForParser.h
lib/Parse/Parser.cpp

index 36d87ebd8acad6b2e684016506b2ea2b70e7b135..0422b038da6566a576dfa049e9da212e821107c3 100644 (file)
@@ -18,6 +18,7 @@
 #include "clang/Parse/ParseDiagnostic.h"
 #include "clang/Parse/Parser.h"
 #include "clang/Sema/DelayedDiagnostic.h"
+#include "clang/Sema/ParsedTemplate.h"
 #include "clang/Sema/Sema.h"
 
 namespace clang {
@@ -442,6 +443,25 @@ namespace clang {
     void skipToEnd();
   };
 
+  /// \brief RAIIObject to destroy the contents of a SmallVector of
+  /// TemplateIdAnnotation pointers and clear the vector.
+  class DestroyTemplateIdAnnotationsRAIIObj {
+    SmallVectorImpl<TemplateIdAnnotation *> &Container;
+
+  public:
+    DestroyTemplateIdAnnotationsRAIIObj(
+        SmallVectorImpl<TemplateIdAnnotation *> &Container)
+        : Container(Container) {}
+
+    ~DestroyTemplateIdAnnotationsRAIIObj() {
+      for (SmallVectorImpl<TemplateIdAnnotation *>::iterator I =
+               Container.begin(),
+             E = Container.end();
+           I != E; ++I)
+        (*I)->Destroy();
+      Container.clear();
+    }
+  };
 } // end namespace clang
 
 #endif
index c938cc9b5e4111bdcff5b234f6a0447504cd183b..08b7661a8a263ab66b5d4359c03728832a298d25 100644 (file)
@@ -37,26 +37,6 @@ public:
     return false;
   }
 };
-
-/// \brief RAIIObject to destroy the contents of a SmallVector of
-/// TemplateIdAnnotation pointers and clear the vector.
-class DestroyTemplateIdAnnotationsRAIIObj {
-  SmallVectorImpl<TemplateIdAnnotation *> &Container;
-
-public:
-  DestroyTemplateIdAnnotationsRAIIObj(
-      SmallVectorImpl<TemplateIdAnnotation *> &Container)
-      : Container(Container) {}
-
-  ~DestroyTemplateIdAnnotationsRAIIObj() {
-    for (SmallVectorImpl<TemplateIdAnnotation *>::iterator I =
-             Container.begin(),
-                                                           E = Container.end();
-         I != E; ++I)
-      (*I)->Destroy();
-    Container.clear();
-  }
-};
 } // end anonymous namespace
 
 IdentifierInfo *Parser::getSEHExceptKeyword() {