/** ** \file assert/desugar-visitor.hh ** \brief Declaration of assert::DesugarVisitor. */ #pragma once #include #include namespace assert { class DesugarVisitor : public desugar::DesugarVisitor , public ast::AssertConstVisitor { public: using super_type = desugar::DesugarVisitor; using super_type::operator(); // Build a DesugarVisitor DesugarVisitor(bool desugar_for_p, bool desugar_string_cmp_p); // Desugar assertions // \param e Node to visit void operator()(const ast::AssertExp& e) override; private: // Retrieve the pretty-printed version of an assertion's condition as a // string // \param e Node to pretty-print. inline std::string get_formatted_assert_cond(const ast::AssertExp& e); // Retrieve the pretty-printed version of a Location as a string // \param loc Location record to pretty-print inline std::string get_formatted_location(const ast::Location& loc); }; } // namespace assert #include