feat: add "--flycheck" option to print out error msgs for flycheck
This commit is contained in:
parent
82afcfac9c
commit
14a406d4d7
3 changed files with 16 additions and 2 deletions
|
@ -133,8 +133,11 @@ void parser::display_error_pos(unsigned line, unsigned pos) {
|
||||||
void parser::display_error_pos(pos_info p) { display_error_pos(p.first, p.second); }
|
void parser::display_error_pos(pos_info p) { display_error_pos(p.first, p.second); }
|
||||||
|
|
||||||
void parser::display_error(char const * msg, unsigned line, unsigned pos) {
|
void parser::display_error(char const * msg, unsigned line, unsigned pos) {
|
||||||
|
bool use_flycheck = regular_stream().get_options().get_bool("use_flycheck", false);
|
||||||
|
if (use_flycheck) regular_stream() << "FLYCHECK_BEGIN ERROR" << endl;
|
||||||
display_error_pos(line, pos);
|
display_error_pos(line, pos);
|
||||||
regular_stream() << " " << msg << endl;
|
regular_stream() << " " << msg << endl;
|
||||||
|
if (use_flycheck) regular_stream() << "FLYCHECK_END" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void parser::display_error(char const * msg, pos_info p) {
|
void parser::display_error(char const * msg, pos_info p) {
|
||||||
|
|
|
@ -131,6 +131,8 @@ static void display_error(io_state_stream const & ios, pos_info_provider const *
|
||||||
// }
|
// }
|
||||||
|
|
||||||
void display_error(io_state_stream const & ios, pos_info_provider const * p, exception const & ex) {
|
void display_error(io_state_stream const & ios, pos_info_provider const * p, exception const & ex) {
|
||||||
|
bool use_flycheck = ios.get_options().get_bool("use_flycheck", false);
|
||||||
|
if (use_flycheck) ios << "FLYCHECK_BEGIN ERROR" << endl;
|
||||||
if (auto k_ex = dynamic_cast<kernel_exception const *>(&ex)) {
|
if (auto k_ex = dynamic_cast<kernel_exception const *>(&ex)) {
|
||||||
display_error(ios, p, *k_ex);
|
display_error(ios, p, *k_ex);
|
||||||
} else if (auto e_ex = dynamic_cast<unifier_exception const *>(&ex)) {
|
} else if (auto e_ex = dynamic_cast<unifier_exception const *>(&ex)) {
|
||||||
|
@ -149,5 +151,6 @@ void display_error(io_state_stream const & ios, pos_info_provider const * p, exc
|
||||||
} else {
|
} else {
|
||||||
ios << "error: " << ex.what() << endl;
|
ios << "error: " << ex.what() << endl;
|
||||||
}
|
}
|
||||||
|
if (use_flycheck) ios << "FLYCHECK_END" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,7 @@ static void display_help(std::ostream & out) {
|
||||||
std::cout << " --hott use Homotopy Type Theory kernel and libraries\n";
|
std::cout << " --hott use Homotopy Type Theory kernel and libraries\n";
|
||||||
std::cout << " --threads=num -j number of threads used to process lean files\n";
|
std::cout << " --threads=num -j number of threads used to process lean files\n";
|
||||||
std::cout << " --deps just print dependencies of a Lean input\n";
|
std::cout << " --deps just print dependencies of a Lean input\n";
|
||||||
|
std::cout << " --flycheck print structured error message for flycheck\n";
|
||||||
#if defined(LEAN_USE_BOOST)
|
#if defined(LEAN_USE_BOOST)
|
||||||
std::cout << " --tstack=num -s thread stack size in Kb\n";
|
std::cout << " --tstack=num -s thread stack size in Kb\n";
|
||||||
#endif
|
#endif
|
||||||
|
@ -109,6 +110,7 @@ static struct option g_long_options[] = {
|
||||||
{"hott", no_argument, 0, 'H'},
|
{"hott", no_argument, 0, 'H'},
|
||||||
{"threads", required_argument, 0, 'j'},
|
{"threads", required_argument, 0, 'j'},
|
||||||
{"deps", no_argument, 0, 'D'},
|
{"deps", no_argument, 0, 'D'},
|
||||||
|
{"flycheck", no_argument, 0, 'F'},
|
||||||
#if defined(LEAN_USE_BOOST)
|
#if defined(LEAN_USE_BOOST)
|
||||||
{"tstack", required_argument, 0, 's'},
|
{"tstack", required_argument, 0, 's'},
|
||||||
#endif
|
#endif
|
||||||
|
@ -116,9 +118,9 @@ static struct option g_long_options[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(LEAN_USE_BOOST)
|
#if defined(LEAN_USE_BOOST)
|
||||||
static char const * g_opt_str = "DHiqlupgvhj:012c:012s:012t:012o:";
|
static char const * g_opt_str = "FDHiqlupgvhj:012c:012s:012t:012o:";
|
||||||
#else
|
#else
|
||||||
static char const * g_opt_str = "DHiqlupgvhj:012c:012t:012o:";
|
static char const * g_opt_str = "FDHiqlupgvhj:012c:012t:012o:";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum class lean_mode { Standard, HoTT };
|
enum class lean_mode { Standard, HoTT };
|
||||||
|
@ -131,6 +133,7 @@ int main(int argc, char ** argv) {
|
||||||
bool quiet = false;
|
bool quiet = false;
|
||||||
bool interactive = false;
|
bool interactive = false;
|
||||||
bool only_deps = false;
|
bool only_deps = false;
|
||||||
|
bool use_flycheck = false;
|
||||||
lean_mode mode = lean_mode::Standard;
|
lean_mode mode = lean_mode::Standard;
|
||||||
unsigned num_threads = 1;
|
unsigned num_threads = 1;
|
||||||
std::string output;
|
std::string output;
|
||||||
|
@ -187,6 +190,9 @@ int main(int argc, char ** argv) {
|
||||||
case 'D':
|
case 'D':
|
||||||
only_deps = true;
|
only_deps = true;
|
||||||
break;
|
break;
|
||||||
|
case 'F':
|
||||||
|
use_flycheck = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
std::cerr << "Unknown command line option\n";
|
std::cerr << "Unknown command line option\n";
|
||||||
display_help(std::cerr);
|
display_help(std::cerr);
|
||||||
|
@ -198,6 +204,8 @@ int main(int argc, char ** argv) {
|
||||||
io_state ios(lean::mk_pretty_formatter_factory());
|
io_state ios(lean::mk_pretty_formatter_factory());
|
||||||
if (quiet)
|
if (quiet)
|
||||||
ios.set_option("verbose", false);
|
ios.set_option("verbose", false);
|
||||||
|
if (use_flycheck)
|
||||||
|
ios.set_option("use_flycheck", true);
|
||||||
script_state S = lean::get_thread_script_state();
|
script_state S = lean::get_thread_script_state();
|
||||||
set_environment set1(S, env);
|
set_environment set1(S, env);
|
||||||
set_io_state set2(S, ios);
|
set_io_state set2(S, ios);
|
||||||
|
|
Loading…
Reference in a new issue