SpECTRE Documentation Coverage Report
Current view: top level - Options - ParseError.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 50.0 % 2 1
Test Date: 2026-10-22 17:29:42
Legend: Lines:     hit not hit

            Line data    Source code
       1            0 : // Distributed under the MIT License.
       2              : // See LICENSE.txt for details.
       3              : 
       4              : #pragma once
       5              : 
       6              : #include <exception>
       7              : #include <sstream>
       8              : #include <string>
       9              : #include <utility>
      10              : 
      11              : #include "Options/Context.hpp"
      12              : #include "Utilities/ErrorHandling/Error.hpp"
      13              : 
      14              : namespace Options {
      15              : /// \cond
      16              : namespace detail {
      17              : class propagate_context : public std::exception {
      18              :  public:
      19              :   // cppcheck-suppress passedByValue
      20              :   explicit propagate_context(std::string message)
      21              :       : message_(std::move(message)) {}
      22              : 
      23              :   const char* what() const noexcept(true) override { return message_.c_str(); }
      24              :   const std::string& message() const { return message_; }
      25              : 
      26              :  private:
      27              :   std::string message_;
      28              : };
      29              : }  // namespace detail
      30              : /// \endcond
      31              : 
      32              : /// \ingroup OptionParsingGroup
      33              : /// Like ERROR("\n" << (context) << m), but instead throws an
      34              : /// exception that will be caught in a higher level Options if not
      35              : /// passed a top-level context.  This is used to print a parsing
      36              : /// "backtrace" since we can't pass any extra data through the
      37              : /// yaml-cpp code.
      38              : ///
      39              : /// \param context Context used to print a parsing traceback
      40              : /// \param m error message, as for ERROR
      41            1 : #define PARSE_ERROR(context, m)                                         \
      42              :   do {                                                                  \
      43              :     if ((context).top_level) {                                          \
      44              :       /* clang-tidy: macro arg in parentheses */                        \
      45              :       ERROR_NO_TRACE("\n" << (context) << m); /* NOLINT */              \
      46              :     } else {                                                            \
      47              :       std::ostringstream avoid_name_collisions_PARSE_ERROR;             \
      48              :       /* clang-tidy: macro arg in parentheses */                        \
      49              :       avoid_name_collisions_PARSE_ERROR << (context) << m; /* NOLINT */ \
      50              :       throw ::Options::detail::propagate_context(                       \
      51              :           avoid_name_collisions_PARSE_ERROR.str());                     \
      52              :     }                                                                   \
      53              :   } while (false)
      54              : }  // namespace Options
        

Generated by: LCOV version 2.0-1