feat(shell/lean): re-add --run flag
This commit is contained in:
parent
99bc069fdd
commit
795359ee49
2 changed files with 13 additions and 4 deletions
|
|
@ -529,8 +529,6 @@ public:
|
|||
uint32 run_main(int argc, char * argv[]) {
|
||||
decl d = get_fdecl("main");
|
||||
array_ref<param> const & params = decl_params(d);
|
||||
object * w = io_mk_world();
|
||||
m_arg_stack.push_back(w);
|
||||
if (params.size() == 2) {
|
||||
lean_object * in = lean_box(0);
|
||||
int i = argc;
|
||||
|
|
@ -545,6 +543,8 @@ public:
|
|||
} else {
|
||||
lean_assert(params.size() == 1);
|
||||
}
|
||||
object * w = io_mk_world();
|
||||
m_arg_stack.push_back(w);
|
||||
push_frame("main", 0);
|
||||
w = eval_body(decl_fun_body(d));
|
||||
pop_frame();
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ Author: Leonardo de Moura
|
|||
#include "library/trace.h"
|
||||
#include "init/init.h"
|
||||
#include "frontends/lean/simple_pos_info_provider.h"
|
||||
#include "library/compiler/ir_interpreter.h"
|
||||
#ifdef _MSC_VER
|
||||
#include <io.h>
|
||||
#define STDOUT_FILENO 1
|
||||
|
|
@ -219,6 +220,7 @@ static struct option g_long_options[] = {
|
|||
{"version", no_argument, 0, 'v'},
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"githash", no_argument, 0, 'g'},
|
||||
{"run", no_argument, 0, 'r'},
|
||||
{"make", no_argument, 0, 'm'},
|
||||
{"stdin", no_argument, 0, 'i'},
|
||||
{"memory", required_argument, 0, 'M'},
|
||||
|
|
@ -346,6 +348,7 @@ int main(int argc, char ** argv) {
|
|||
auto init_start = std::chrono::steady_clock::now();
|
||||
::initializer init;
|
||||
second_duration init_time = std::chrono::steady_clock::now() - init_start;
|
||||
bool run = false;
|
||||
bool make_mode = false;
|
||||
bool use_stdin = false;
|
||||
unsigned trust_lvl = LEAN_BELIEVER_TRUST_LEVEL + 1;
|
||||
|
|
@ -402,6 +405,9 @@ int main(int argc, char ** argv) {
|
|||
case 'i':
|
||||
use_stdin = true;
|
||||
break;
|
||||
case 'r':
|
||||
run = true;
|
||||
break;
|
||||
case 'm':
|
||||
make_mode = true;
|
||||
break;
|
||||
|
|
@ -496,12 +502,12 @@ int main(int argc, char ** argv) {
|
|||
contents = buf.str();
|
||||
main_module_name = name("_stdin");
|
||||
} else {
|
||||
if (argc - optind != 1) {
|
||||
if (!run && argc - optind != 1) {
|
||||
std::cerr << "Expected exactly one file name\n";
|
||||
display_help(std::cerr);
|
||||
return 1;
|
||||
}
|
||||
mod_fn = lrealpath(argv[optind]);
|
||||
mod_fn = lrealpath(argv[optind++]);
|
||||
contents = read_file(mod_fn);
|
||||
main_module_name = module_name_of_file2(mod_fn);
|
||||
}
|
||||
|
|
@ -567,6 +573,9 @@ int main(int argc, char ** argv) {
|
|||
env.display_stats();
|
||||
}
|
||||
|
||||
if (run && ok) {
|
||||
return ir::run_main(env, argc - optind, argv + optind);
|
||||
}
|
||||
if (make_mode && ok) {
|
||||
auto olean_fn = olean_of_lean(mod_fn);
|
||||
time_task t(".olean serialization",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue