Stop using ScopeGuardImpl in DynamicParser
[folly.git] / folly / experimental / DynamicParser.cpp
index 4038af97f50087fcb87b73eebc160b59edba65c6..6e07ff71f1c0891c807efd764561389cf14b4892 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 Facebook, Inc.
+ * Copyright 2016-present Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -42,7 +42,7 @@ folly::dynamic& insertAtKey(
     "Unsupported key type ", key.typeName(), " of ", detail::toPseudoJson(key)
   );
 }
-}  // anonymous namespace
+} // namespace
 
 void DynamicParser::reportError(
     const folly::dynamic* lookup_k,
@@ -96,7 +96,6 @@ void DynamicParser::reportError(
       break;  // Continue parsing
     case OnError::THROW:
       stack_.throwErrors();  // Package releaseErrors() into an exception.
-      LOG(FATAL) << "Not reached";  // silence lint false positive
     default:
       LOG(FATAL) << "Bad onError_: " << static_cast<int>(onError_);
   }
@@ -118,14 +117,11 @@ void DynamicParser::ParserStack::Pop::operator()() noexcept {
   }
 }
 
-folly::ScopeGuardImpl<DynamicParser::ParserStack::Pop>
-DynamicParser::ParserStack::push(
+DynamicParser::ParserStack::PopGuard DynamicParser::ParserStack::push(
     const folly::dynamic& k,
     const folly::dynamic& v) noexcept {
   // Save the previous state of the parser.
-  folly::ScopeGuardImpl<DynamicParser::ParserStack::Pop> guard(
-    DynamicParser::ParserStack::Pop(this)
-  );
+  DynamicParser::ParserStack::PopGuard guard{this};
   key_ = &k;
   value_ = &v;
   // We create errors_ sub-objects lazily to keep the result small.
@@ -168,7 +164,7 @@ folly::dynamic DynamicParser::ParserStack::releaseErrors() {
   return releaseErrorsImpl();
 }
 
-void DynamicParser::ParserStack::throwErrors() {
+[[noreturn]] void DynamicParser::ParserStack::throwErrors() {
   throw DynamicParserParseError(releaseErrorsImpl());
 }
 
@@ -188,6 +184,6 @@ std::string toPseudoJson(const folly::dynamic& d) {
   ss << d;
   return ss.str();
 }
-}  // namespace detail
+} // namespace detail
 
-}  // namespace folly
+} // namespace folly