diff options
Diffstat (limited to 'crates/ra_hir_def/src/nameres/tests.rs')
-rw-r--r-- | crates/ra_hir_def/src/nameres/tests.rs | 131 |
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] | ||
563 | fn underscore_import() { | ||
564 | check( | ||
565 | r#" | ||
566 | //- /main.rs | ||
567 | use tr::Tr as _; | ||
568 | use tr::Tr2 as _; | ||
569 | |||
570 | mod 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] | ||
589 | fn underscore_reexport() { | ||
590 | check( | ||
591 | r#" | ||
592 | //- /main.rs | ||
593 | mod tr { | ||
594 | pub trait PubTr {} | ||
595 | pub trait PrivTr {} | ||
596 | } | ||
597 | mod reex { | ||
598 | use crate::tr::PrivTr as _; | ||
599 | pub use crate::tr::PubTr as _; | ||
600 | } | ||
601 | use 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] | ||
621 | fn underscore_pub_crate_reexport() { | ||
622 | check( | ||
623 | r#" | ||
624 | //- /main.rs crate:main deps:lib | ||
625 | use lib::*; | ||
626 | |||
627 | //- /lib.rs crate:lib | ||
628 | use tr::Tr as _; | ||
629 | pub use tr::Tr as _; | ||
630 | |||
631 | mod 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] | ||
645 | fn underscore_nontrait() { | ||
646 | check( | ||
647 | r#" | ||
648 | //- /main.rs | ||
649 | mod m { | ||
650 | pub struct Struct; | ||
651 | pub enum Enum {} | ||
652 | pub const CONST: () = (); | ||
653 | } | ||
654 | use 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] | ||
669 | fn underscore_name_conflict() { | ||
670 | check( | ||
671 | r#" | ||
672 | //- /main.rs | ||
673 | struct Tr; | ||
674 | |||
675 | use tr::Tr as _; | ||
676 | |||
677 | mod 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 | } | ||