aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/nameres/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_def/src/nameres/tests.rs')
-rw-r--r--crates/ra_hir_def/src/nameres/tests.rs131
1 files changed, 131 insertions, 0 deletions
diff --git a/crates/ra_hir_def/src/nameres/tests.rs b/crates/ra_hir_def/src/nameres/tests.rs
index 205d3528b..502b1fb69 100644
--- a/crates/ra_hir_def/src/nameres/tests.rs
+++ b/crates/ra_hir_def/src/nameres/tests.rs
@@ -558,3 +558,134 @@ mod b {
558 "#]], 558 "#]],
559 ); 559 );
560} 560}
561
562#[test]
563fn underscore_import() {
564 check(
565 r#"
566//- /main.rs
567use tr::Tr as _;
568use tr::Tr2 as _;
569
570mod tr {
571 pub trait Tr {}
572 pub trait Tr2 {}
573}
574 "#,
575 expect![[r#"
576 crate
577 _: t
578 _: t
579 tr: t
580
581 crate::tr
582 Tr: t
583 Tr2: t
584 "#]],
585 );
586}
587
588#[test]
589fn underscore_reexport() {
590 check(
591 r#"
592//- /main.rs
593mod tr {
594 pub trait PubTr {}
595 pub trait PrivTr {}
596}
597mod reex {
598 use crate::tr::PrivTr as _;
599 pub use crate::tr::PubTr as _;
600}
601use crate::reex::*;
602 "#,
603 expect![[r#"
604 crate
605 _: t
606 reex: t
607 tr: t
608
609 crate::tr
610 PrivTr: t
611 PubTr: t
612
613 crate::reex
614 _: t
615 _: t
616 "#]],
617 );
618}
619
620#[test]
621fn underscore_pub_crate_reexport() {
622 check(
623 r#"
624//- /main.rs crate:main deps:lib
625use lib::*;
626
627//- /lib.rs crate:lib
628use tr::Tr as _;
629pub use tr::Tr as _;
630
631mod tr {
632 pub trait Tr {
633 fn method(&self) {}
634 }
635}
636 "#,
637 expect![[r#"
638 crate
639 _: t
640 "#]],
641 );
642}
643
644#[test]
645fn underscore_nontrait() {
646 check(
647 r#"
648//- /main.rs
649mod m {
650 pub struct Struct;
651 pub enum Enum {}
652 pub const CONST: () = ();
653}
654use crate::m::{Struct as _, Enum as _, CONST as _};
655 "#,
656 expect![[r#"
657 crate
658 m: t
659
660 crate::m
661 CONST: v
662 Enum: t
663 Struct: t v
664 "#]],
665 );
666}
667
668#[test]
669fn underscore_name_conflict() {
670 check(
671 r#"
672//- /main.rs
673struct Tr;
674
675use tr::Tr as _;
676
677mod tr {
678 pub trait Tr {}
679}
680 "#,
681 expect![[r#"
682 crate
683 _: t
684 Tr: t v
685 tr: t
686
687 crate::tr
688 Tr: t
689 "#]],
690 );
691}