mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 05:15:04 +00:00
minor: Avoid eprintln on panic
This commit is contained in:
parent
71117e6812
commit
99516bbd67
2 changed files with 15 additions and 13 deletions
|
@ -357,17 +357,20 @@ impl<'a, 'b> ExprValidator<'a, 'b> {
|
||||||
infer: &infer,
|
infer: &infer,
|
||||||
db,
|
db,
|
||||||
pattern_arena: &pattern_arena,
|
pattern_arena: &pattern_arena,
|
||||||
eprint_panic_context: &|| {
|
panic_context: &|| {
|
||||||
use syntax::AstNode;
|
use syntax::AstNode;
|
||||||
if let Ok(scrutinee_sptr) = source_map.expr_syntax(match_expr) {
|
let match_expr_text = source_map
|
||||||
let root = scrutinee_sptr.file_syntax(db.upcast());
|
.expr_syntax(match_expr)
|
||||||
if let Some(match_ast) = scrutinee_sptr.value.to_node(&root).syntax().parent() {
|
.ok()
|
||||||
eprintln!(
|
.and_then(|scrutinee_sptr| {
|
||||||
"Match checking is about to panic on this expression:\n{}",
|
let root = scrutinee_sptr.file_syntax(db.upcast());
|
||||||
match_ast.to_string(),
|
scrutinee_sptr.value.to_node(&root).syntax().parent()
|
||||||
);
|
})
|
||||||
}
|
.map(|node| node.to_string());
|
||||||
}
|
format!(
|
||||||
|
"expression:\n{}",
|
||||||
|
match_expr_text.as_deref().unwrap_or("<synthesized expr>")
|
||||||
|
)
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
let report = compute_match_usefulness(&cx, &m_arms);
|
let report = compute_match_usefulness(&cx, &m_arms);
|
||||||
|
|
|
@ -295,7 +295,7 @@ pub(crate) struct MatchCheckCtx<'a> {
|
||||||
pub(crate) db: &'a dyn HirDatabase,
|
pub(crate) db: &'a dyn HirDatabase,
|
||||||
/// Lowered patterns from arms plus generated by the check.
|
/// Lowered patterns from arms plus generated by the check.
|
||||||
pub(crate) pattern_arena: &'a RefCell<PatternArena>,
|
pub(crate) pattern_arena: &'a RefCell<PatternArena>,
|
||||||
pub(crate) eprint_panic_context: &'a dyn Fn(),
|
pub(crate) panic_context: &'a dyn Fn() -> String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> MatchCheckCtx<'a> {
|
impl<'a> MatchCheckCtx<'a> {
|
||||||
|
@ -331,8 +331,7 @@ impl<'a> MatchCheckCtx<'a> {
|
||||||
|
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
pub(super) fn bug(&self, info: &str) -> ! {
|
pub(super) fn bug(&self, info: &str) -> ! {
|
||||||
(self.eprint_panic_context)();
|
panic!("bug: {}\n{}", info, (self.panic_context)());
|
||||||
panic!("bug: {}", info);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue