7d18e9b32e
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
42 lines
1.8 KiB
C++
42 lines
1.8 KiB
C++
/*
|
|
Copyright (c) 2013 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
Author: Leonardo de Moura
|
|
*/
|
|
#pragma once
|
|
#include "util/exception.h"
|
|
#include "kernel/expr.h"
|
|
#include "kernel/context.h"
|
|
#include "library/tactic/proof_state.h"
|
|
#include "frontends/lean/parser_types.h"
|
|
|
|
namespace lean {
|
|
/** \brief Exception used to track parsing erros, it does not leak outside of this class. */
|
|
struct parser_error : public exception {
|
|
pos_info m_pos;
|
|
parser_error(char const * msg, pos_info const & p):exception(msg), m_pos(p) {}
|
|
parser_error(sstream const & msg, pos_info const & p):exception(msg), m_pos(p) {}
|
|
virtual exception * clone() const { return new parser_error(m_msg.c_str(), m_pos); }
|
|
virtual void rethrow() const { throw *this; }
|
|
};
|
|
|
|
/** \brief Exception used to report error in the tactic frontend available in the Lean parser. */
|
|
struct tactic_cmd_error : public parser_error {
|
|
proof_state m_state;
|
|
tactic_cmd_error(char const * msg, pos_info const & p, proof_state const & s):parser_error(msg, p), m_state(s) {}
|
|
tactic_cmd_error(sstream const & msg, pos_info const & p, proof_state const & s):parser_error(msg, p), m_state(s) {}
|
|
virtual exception * clone() const { return new tactic_cmd_error(m_msg.c_str(), m_pos, m_state); }
|
|
virtual void rethrow() const { throw *this; }
|
|
};
|
|
|
|
/** \brief Exception used to report that a metavariable could not be synthesized. */
|
|
struct metavar_not_synthesized_exception : public exception {
|
|
context m_mvar_ctx;
|
|
expr m_mvar;
|
|
expr m_mvar_type;
|
|
public:
|
|
metavar_not_synthesized_exception(context const & ctx, expr const & mvar, expr const & mvar_type, char const * msg):
|
|
exception(msg), m_mvar_ctx(ctx), m_mvar(mvar), m_mvar_type(mvar_type) {}
|
|
};
|
|
}
|