|
1 | 1 | mod block;
|
2 | 2 |
|
3 |
| -use crate::{test_db::TestDB, ModuleDefId}; |
| 3 | +use crate::{hir::MatchArm, test_db::TestDB, ModuleDefId}; |
4 | 4 | use expect_test::{expect, Expect};
|
5 | 5 | use la_arena::RawIdx;
|
6 | 6 | use test_fixture::WithFixture;
|
@@ -459,124 +459,44 @@ async fn foo(a: (), b: i32) -> u32 {
|
459 | 459 | .assert_eq(&printed);
|
460 | 460 | }
|
461 | 461 |
|
462 |
| -fn test1() { |
463 |
| - let (db, body, owner) = lower( |
| 462 | +#[test] |
| 463 | +fn range_bounds_are_hir_exprs() { |
| 464 | + let (_, body, _) = lower( |
464 | 465 | r#"
|
465 | 466 | pub const L: i32 = 6;
|
466 | 467 | mod x {
|
467 | 468 | pub const R: i32 = 100;
|
468 | 469 | }
|
469 | 470 | const fn f(x: i32) -> i32 {
|
470 | 471 | match x {
|
471 |
| - L..=x::R => x * 100, |
472 | 472 | -1..=5 => x * 10,
|
| 473 | + L..=x::R => x * 100, |
473 | 474 | _ => x,
|
474 | 475 | }
|
475 | 476 | }"#,
|
476 | 477 | );
|
477 | 478 |
|
478 |
| - let pat = body |
479 |
| - .pats |
| 479 | + let mtch_arms = body |
| 480 | + .exprs |
480 | 481 | .iter()
|
481 |
| - .find_map(|pat| { |
482 |
| - if let Pat::Range { .. } = pat.1 { |
483 |
| - return Some(pat.1); |
| 482 | + .find_map(|(_, expr)| { |
| 483 | + if let Expr::Match { arms, .. } = expr { |
| 484 | + return Some(arms); |
484 | 485 | }
|
485 | 486 |
|
486 | 487 | None
|
487 | 488 | })
|
488 | 489 | .unwrap();
|
489 | 490 |
|
490 |
| - match pat { |
| 491 | + let MatchArm { pat, .. } = mtch_arms[1]; |
| 492 | + match body.pats[pat] { |
491 | 493 | Pat::Range { start, end } => {
|
492 |
| - dbg!(&body.exprs[start.unwrap()]); |
493 |
| - dbg!(&body.exprs[end.unwrap()]); |
494 |
| - } |
495 |
| - _ => {} |
496 |
| - } |
497 |
| -} |
498 |
| - |
499 |
| -#[test] |
500 |
| -fn test2() { |
501 |
| - let (db, body, owner) = lower( |
502 |
| - r#" |
503 |
| -pub const L: i32 = 6; |
504 |
| -mod x { |
505 |
| - pub const R: i32 = 100; |
506 |
| -} |
507 |
| -const fn f(x: i32) -> i32 { |
508 |
| - match x { |
509 |
| - -1..=5 => x * 10, |
510 |
| - ::std::i32::MIN..=x::R => x * 100, |
511 |
| - _ => x, |
512 |
| - } |
513 |
| -}"#, |
514 |
| - ); |
| 494 | + let hir_start = &body.exprs[start.unwrap()]; |
| 495 | + let hir_end = &body.exprs[end.unwrap()]; |
515 | 496 |
|
516 |
| - for (pat_id, pat) in body.pats.iter() { |
517 |
| - match pat { |
518 |
| - Pat::Range { start, end } => { |
519 |
| - let pretty = body.pretty_print_pat(&db, owner, pat_id, false, Edition::Edition2021); |
520 |
| - eprintln!("RANGE {}", pretty); |
521 |
| - |
522 |
| - if let Some(start) = start { |
523 |
| - eprintln!("START"); |
524 |
| - let expr = body.exprs[*start].clone(); |
525 |
| - dbg!(expr); |
526 |
| - } else { |
527 |
| - eprintln!("START is None"); |
528 |
| - } |
529 |
| - |
530 |
| - if let Some(end) = end { |
531 |
| - eprintln!("END"); |
532 |
| - let expr = body.exprs[*end].clone(); |
533 |
| - dbg!(expr); |
534 |
| - } else { |
535 |
| - eprintln!("END is None"); |
536 |
| - } |
537 |
| - } |
538 |
| - _ => {} |
| 497 | + assert!(matches!(hir_start, Expr::Path { .. })); |
| 498 | + assert!(matches!(hir_end, Expr::Path { .. })); |
539 | 499 | }
|
540 |
| - } |
541 |
| -} |
542 |
| - |
543 |
| -#[test] |
544 |
| -fn test3() { |
545 |
| - let (db, body, owner) = lower( |
546 |
| - r#" |
547 |
| -const A: u32 = 0; |
548 |
| -
|
549 |
| -fn bar(v: u32) { |
550 |
| - match v { |
551 |
| - 0..=A => {} |
552 | 500 | _ => {}
|
553 | 501 | }
|
554 |
| -}"#, |
555 |
| - ); |
556 |
| - |
557 |
| - for (pat_id, pat) in body.pats.iter() { |
558 |
| - match pat { |
559 |
| - Pat::Range { start, end } => { |
560 |
| - let pretty = body.pretty_print_pat(&db, owner, pat_id, false, Edition::Edition2021); |
561 |
| - eprintln!("RANGE {}", pretty); |
562 |
| - |
563 |
| - if let Some(start) = start { |
564 |
| - eprintln!("START"); |
565 |
| - let expr = body.exprs[*start].clone(); |
566 |
| - dbg!(expr); |
567 |
| - } else { |
568 |
| - eprintln!("START is None"); |
569 |
| - } |
570 |
| - |
571 |
| - if let Some(end) = end { |
572 |
| - eprintln!("END"); |
573 |
| - let expr = body.exprs[*end].clone(); |
574 |
| - dbg!(expr); |
575 |
| - } else { |
576 |
| - eprintln!("END is None"); |
577 |
| - } |
578 |
| - } |
579 |
| - _ => {} |
580 |
| - } |
581 |
| - } |
582 | 502 | }
|
0 commit comments