lean2/src/frontends/lean/elaborator_context.h

35 lines
1.3 KiB
C++

/*
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Leonardo de Moura
*/
#pragma once
#include "kernel/environment.h"
#include "library/io_state.h"
#include "frontends/lean/local_decls.h"
#include "frontends/lean/info_manager.h"
namespace lean {
name const & get_elaborator_ignore_instances_name();
/** \brief Environment for elaboration, it contains all the information that is "scope-indenpendent" */
class elaborator_context {
environment m_env;
io_state m_ios;
local_decls<level> m_lls; // local universe levels
pos_info_provider const * m_pos_provider;
info_manager * m_info_manager;
// configuration
bool m_check_unassigned;
bool m_use_local_instances;
bool m_ignore_instances;
bool m_flycheck_goals;
bool m_fail_missing_field;
friend class elaborator;
public:
elaborator_context(environment const & env, io_state const & ios, local_decls<level> const & lls,
pos_info_provider const * pp = nullptr, info_manager * info = nullptr, bool check_unassigned = true);
};
void initialize_elaborator_context();
void finalize_elaborator_context();
}