|
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