Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/consteval/tests.rs')
| -rw-r--r-- | crates/hir-ty/src/consteval/tests.rs | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/crates/hir-ty/src/consteval/tests.rs b/crates/hir-ty/src/consteval/tests.rs index 5ab1f97020..b4b5fdd891 100644 --- a/crates/hir-ty/src/consteval/tests.rs +++ b/crates/hir-ty/src/consteval/tests.rs @@ -26,9 +26,11 @@ fn simplify(e: ConstEvalError) -> ConstEvalError { #[track_caller] fn check_fail(ra_fixture: &str, error: impl FnOnce(ConstEvalError) -> bool) { let (db, file_id) = TestDB::with_single_file(ra_fixture); - match eval_goal(&db, file_id).map_err(simplify) { + match eval_goal(&db, file_id) { Ok(_) => panic!("Expected fail, but it succeeded"), - Err(e) => assert!(error(e)), + Err(e) => { + assert!(error(simplify(e.clone())), "Actual error was: {}", pretty_print_err(e, db)) + } } } @@ -38,13 +40,7 @@ fn check_number(ra_fixture: &str, answer: i128) { let r = match eval_goal(&db, file_id) { Ok(t) => t, Err(e) => { - let mut err = String::new(); - let span_formatter = |file, range| format!("{:?} {:?}", file, range); - match e { - ConstEvalError::MirLowerError(e) => e.pretty_print(&mut err, &db, span_formatter), - ConstEvalError::MirEvalError(e) => e.pretty_print(&mut err, &db, span_formatter), - } - .unwrap(); + let err = pretty_print_err(e, db); panic!("Error in evaluating goal: {}", err); } }; @@ -64,6 +60,17 @@ fn check_number(ra_fixture: &str, answer: i128) { } } +fn pretty_print_err(e: ConstEvalError, db: TestDB) -> String { + let mut err = String::new(); + let span_formatter = |file, range| format!("{:?} {:?}", file, range); + match e { + ConstEvalError::MirLowerError(e) => e.pretty_print(&mut err, &db, span_formatter), + ConstEvalError::MirEvalError(e) => e.pretty_print(&mut err, &db, span_formatter), + } + .unwrap(); + err +} + fn eval_goal(db: &TestDB, file_id: FileId) -> Result<Const, ConstEvalError> { let module_id = db.module_for_file(file_id); let def_map = module_id.def_map(db); @@ -2188,6 +2195,20 @@ fn const_trait_assoc() { } #[test] +fn panic_messages() { + check_fail( + r#" + //- minicore: panic + const GOAL: u8 = { + let x: u16 = 2; + panic!("hello"); + }; + "#, + |e| e == ConstEvalError::MirEvalError(MirEvalError::Panic("hello".to_string())), + ); +} + +#[test] fn exec_limits() { check_fail( r#" |