feat(library/error_handling/error_handling): set 'pp.beta' to false when displaying errors
see issue #669
This commit is contained in:
parent
4694f47ea4
commit
7bad9fe554
3 changed files with 23 additions and 1 deletions
|
@ -15,6 +15,7 @@ Author: Leonardo de Moura
|
|||
#include "library/parser_nested_exception.h"
|
||||
#include "library/generic_exception.h"
|
||||
#include "library/flycheck.h"
|
||||
#include "library/pp_options.h"
|
||||
#include "library/error_handling/error_handling.h"
|
||||
|
||||
namespace lean {
|
||||
|
@ -144,7 +145,12 @@ 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, throwable const & ex) {
|
||||
void display_error(io_state_stream const & _ios, pos_info_provider const * p, throwable const & ex) {
|
||||
options opts = _ios.get_options();
|
||||
// Disable pp.beta to avoid cryptic error messages.
|
||||
// See issue https://github.com/leanprover/lean/issues/669
|
||||
opts = opts.update_if_undef(get_pp_beta_name(), false);
|
||||
io_state_stream ios = _ios.update_options(opts);
|
||||
flycheck_error err(ios);
|
||||
if (auto k_ex = dynamic_cast<kernel_exception const *>(&ex)) {
|
||||
display_error(ios, p, *k_ex);
|
||||
|
|
1
tests/lean/669.lean
Normal file
1
tests/lean/669.lean
Normal file
|
@ -0,0 +1 @@
|
|||
check (λ {T : Prop} (t : T), t) bool.tt
|
15
tests/lean/669.lean.expected.out
Normal file
15
tests/lean/669.lean.expected.out
Normal file
|
@ -0,0 +1,15 @@
|
|||
669.lean:1:9: error: type error in placeholder assigned to
|
||||
bool
|
||||
placeholder has type
|
||||
Type₁
|
||||
but is expected to have type
|
||||
Prop
|
||||
the assignment was attempted when trying to solve
|
||||
type mismatch at application
|
||||
(λ {T : Prop} (t : T), t) bool.tt
|
||||
term
|
||||
bool.tt
|
||||
has type
|
||||
bool
|
||||
but is expected to have type
|
||||
bool
|
Loading…
Reference in a new issue