Replace AutoClear with SK_AT_SCOPE_EXIT.
Change-Id: I218429246da2da3e80fb1823241fdbcf84f0dd30
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/372478
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/src/sksl/SkSLIRGenerator.cpp b/src/sksl/SkSLIRGenerator.cpp
index 3f3a0c4..4c1c0cb 100644
--- a/src/sksl/SkSLIRGenerator.cpp
+++ b/src/sksl/SkSLIRGenerator.cpp
@@ -13,6 +13,7 @@
#include <unordered_set>
#include "include/private/SkTArray.h"
+#include "src/core/SkScopeExit.h"
#include "src/sksl/SkSLAnalysis.h"
#include "src/sksl/SkSLCompiler.h"
#include "src/sksl/SkSLConstantFolder.h"
@@ -1003,24 +1004,6 @@
return std::make_unique<ExpressionStatement>(std::move(result));
}
-template<typename T>
-class AutoClear {
-public:
- AutoClear(T* container)
- : fContainer(container) {
- SkASSERT(container->empty());
- }
-
- ~AutoClear() {
- fContainer->clear();
- }
-
-private:
- T* fContainer;
-};
-
-template <typename T> AutoClear(T* c) -> AutoClear<T>;
-
void IRGenerator::checkModifiers(int offset, const Modifiers& modifiers, int permitted) {
int flags = modifiers.fFlags;
#define CHECK(flag, name) \
@@ -1143,7 +1126,9 @@
}
void IRGenerator::convertFunction(const ASTNode& f) {
- AutoClear clear(&fReferencedIntrinsics);
+ SkASSERT(fReferencedIntrinsics.empty());
+ SK_AT_SCOPE_EXIT(fReferencedIntrinsics.clear());
+
auto iter = f.begin();
const Type* returnType = this->convertType(*(iter++), /*allowVoid=*/true);
if (returnType == nullptr) {