Give scope_exit helper correct move semantics
llvm-svn: 323442
diff --git a/llvm/unittests/ADT/ScopeExitTest.cpp b/llvm/unittests/ADT/ScopeExitTest.cpp
index 301942c..ab11dff 100644
--- a/llvm/unittests/ADT/ScopeExitTest.cpp
+++ b/llvm/unittests/ADT/ScopeExitTest.cpp
@@ -29,4 +29,21 @@
EXPECT_TRUE(Called);
}
+TEST(ScopeExitTest, Release) {
+ int Count = 0;
+ auto Increment = [&] { ++Count; };
+ {
+ auto G = make_scope_exit(Increment);
+ auto H = std::move(G);
+ auto I = std::move(G);
+ EXPECT_EQ(0, Count);
+ }
+ EXPECT_EQ(1, Count);
+ {
+ auto G = make_scope_exit(Increment);
+ G.release();
+ }
+ EXPECT_EQ(1, Count);
+}
+
} // end anonymous namespace