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) {