diff options
-rw-r--r-- | crates/rust-analyzer/tests/heavy_tests/main.rs | 239 |
1 files changed, 105 insertions, 134 deletions
diff --git a/crates/rust-analyzer/tests/heavy_tests/main.rs b/crates/rust-analyzer/tests/heavy_tests/main.rs index e94fbce3a..2e52a29a8 100644 --- a/crates/rust-analyzer/tests/heavy_tests/main.rs +++ b/crates/rust-analyzer/tests/heavy_tests/main.rs | |||
@@ -575,7 +575,7 @@ version = \"0.0.0\" | |||
575 | } | 575 | } |
576 | 576 | ||
577 | #[test] | 577 | #[test] |
578 | fn resolve_include_concat_env() { | 578 | fn out_dirs_check() { |
579 | if skip_slow_tests() { | 579 | if skip_slow_tests() { |
580 | return; | 580 | return; |
581 | } | 581 | } |
@@ -598,11 +598,28 @@ fn main() { | |||
598 | r#"pub fn message() -> &'static str { "Hello, World!" }"#, | 598 | r#"pub fn message() -> &'static str { "Hello, World!" }"#, |
599 | ) | 599 | ) |
600 | .unwrap(); | 600 | .unwrap(); |
601 | println!("cargo:rustc-cfg=atom_cfg"); | ||
602 | println!("cargo:rustc-cfg=featlike=\"set\""); | ||
601 | println!("cargo:rerun-if-changed=build.rs"); | 603 | println!("cargo:rerun-if-changed=build.rs"); |
602 | } | 604 | } |
603 | //- src/main.rs | 605 | //- src/main.rs |
604 | include!(concat!(env!("OUT_DIR"), "/hello.rs")); | 606 | include!(concat!(env!("OUT_DIR"), "/hello.rs")); |
605 | 607 | ||
608 | #[cfg(atom_cfg)] | ||
609 | struct A; | ||
610 | #[cfg(bad_atom_cfg)] | ||
611 | struct A; | ||
612 | #[cfg(featlike = "set")] | ||
613 | struct B; | ||
614 | #[cfg(featlike = "not_set")] | ||
615 | struct B; | ||
616 | |||
617 | fn main() { | ||
618 | let va = A; | ||
619 | let vb = B; | ||
620 | message(); | ||
621 | } | ||
622 | |||
606 | fn main() { message(); } | 623 | fn main() { message(); } |
607 | "###, | 624 | "###, |
608 | ) | 625 | ) |
@@ -614,12 +631,98 @@ fn main() { message(); } | |||
614 | let res = server.send_request::<GotoDefinition>(GotoDefinitionParams { | 631 | let res = server.send_request::<GotoDefinition>(GotoDefinitionParams { |
615 | text_document_position_params: TextDocumentPositionParams::new( | 632 | text_document_position_params: TextDocumentPositionParams::new( |
616 | server.doc_id("src/main.rs"), | 633 | server.doc_id("src/main.rs"), |
617 | Position::new(2, 15), | 634 | Position::new(14, 8), |
618 | ), | 635 | ), |
619 | work_done_progress_params: Default::default(), | 636 | work_done_progress_params: Default::default(), |
620 | partial_result_params: Default::default(), | 637 | partial_result_params: Default::default(), |
621 | }); | 638 | }); |
622 | assert!(format!("{}", res).contains("hello.rs")); | 639 | assert!(format!("{}", res).contains("hello.rs")); |
640 | server.request::<GotoTypeDefinition>( | ||
641 | GotoDefinitionParams { | ||
642 | text_document_position_params: TextDocumentPositionParams::new( | ||
643 | server.doc_id("src/main.rs"), | ||
644 | Position::new(12, 9), | ||
645 | ), | ||
646 | work_done_progress_params: Default::default(), | ||
647 | partial_result_params: Default::default(), | ||
648 | }, | ||
649 | json!([{ | ||
650 | "originSelectionRange": { | ||
651 | "end": { | ||
652 | "character": 10, | ||
653 | "line": 12 | ||
654 | }, | ||
655 | "start": { | ||
656 | "character": 8, | ||
657 | "line": 12 | ||
658 | } | ||
659 | }, | ||
660 | "targetRange": { | ||
661 | "end": { | ||
662 | "character": 9, | ||
663 | "line": 3 | ||
664 | }, | ||
665 | "start": { | ||
666 | "character": 0, | ||
667 | "line": 2 | ||
668 | } | ||
669 | }, | ||
670 | "targetSelectionRange": { | ||
671 | "end": { | ||
672 | "character": 8, | ||
673 | "line": 3 | ||
674 | }, | ||
675 | "start": { | ||
676 | "character": 7, | ||
677 | "line": 3 | ||
678 | } | ||
679 | }, | ||
680 | "targetUri": "file:///[..]src/main.rs" | ||
681 | }]), | ||
682 | ); | ||
683 | server.request::<GotoTypeDefinition>( | ||
684 | GotoDefinitionParams { | ||
685 | text_document_position_params: TextDocumentPositionParams::new( | ||
686 | server.doc_id("src/main.rs"), | ||
687 | Position::new(13, 9), | ||
688 | ), | ||
689 | work_done_progress_params: Default::default(), | ||
690 | partial_result_params: Default::default(), | ||
691 | }, | ||
692 | json!([{ | ||
693 | "originSelectionRange": { | ||
694 | "end": { | ||
695 | "character": 10, | ||
696 | "line": 13 | ||
697 | }, | ||
698 | "start": { | ||
699 | "character": 8, | ||
700 | "line":13 | ||
701 | } | ||
702 | }, | ||
703 | "targetRange": { | ||
704 | "end": { | ||
705 | "character": 9, | ||
706 | "line": 7 | ||
707 | }, | ||
708 | "start": { | ||
709 | "character": 0, | ||
710 | "line":6 | ||
711 | } | ||
712 | }, | ||
713 | "targetSelectionRange": { | ||
714 | "end": { | ||
715 | "character": 8, | ||
716 | "line": 7 | ||
717 | }, | ||
718 | "start": { | ||
719 | "character": 7, | ||
720 | "line": 7 | ||
721 | } | ||
722 | }, | ||
723 | "targetUri": "file:///[..]src/main.rs" | ||
724 | }]), | ||
725 | ); | ||
623 | } | 726 | } |
624 | 727 | ||
625 | #[test] | 728 | #[test] |
@@ -708,135 +811,3 @@ pub fn foo(_input: TokenStream) -> TokenStream { | |||
708 | let value = res.get("contents").unwrap().get("value").unwrap().to_string(); | 811 | let value = res.get("contents").unwrap().get("value").unwrap().to_string(); |
709 | assert_eq!(value, r#""```rust\nfoo::Bar\nfn bar()\n```""#) | 812 | assert_eq!(value, r#""```rust\nfoo::Bar\nfn bar()\n```""#) |
710 | } | 813 | } |
711 | |||
712 | #[test] | ||
713 | fn build_rs_cfgs() { | ||
714 | if skip_slow_tests() { | ||
715 | return; | ||
716 | } | ||
717 | |||
718 | let server = Project::with_fixture( | ||
719 | r###" | ||
720 | //- Cargo.toml | ||
721 | [package] | ||
722 | name = "foo" | ||
723 | version = "0.0.0" | ||
724 | |||
725 | //- build.rs | ||
726 | |||
727 | fn main() { | ||
728 | println!("cargo:rustc-cfg=atom_cfg"); | ||
729 | println!("cargo:rustc-cfg=featlike=\"set\""); | ||
730 | println!("cargo:rerun-if-changed=build.rs"); | ||
731 | } | ||
732 | //- src/main.rs | ||
733 | #[cfg(atom_cfg)] | ||
734 | struct A; | ||
735 | |||
736 | #[cfg(bad_atom_cfg)] | ||
737 | struct A; | ||
738 | |||
739 | #[cfg(featlike = "set")] | ||
740 | struct B; | ||
741 | |||
742 | #[cfg(featlike = "not_set")] | ||
743 | struct B; | ||
744 | |||
745 | fn main() { | ||
746 | let va = A; | ||
747 | let vb = B; | ||
748 | } | ||
749 | "###, | ||
750 | ) | ||
751 | .with_config(|config| { | ||
752 | config.cargo.load_out_dirs_from_check = true; | ||
753 | }) | ||
754 | .server(); | ||
755 | server.wait_until_workspace_is_loaded(); | ||
756 | server.request::<GotoTypeDefinition>( | ||
757 | GotoDefinitionParams { | ||
758 | text_document_position_params: TextDocumentPositionParams::new( | ||
759 | server.doc_id("src/main.rs"), | ||
760 | Position::new(13, 9), | ||
761 | ), | ||
762 | work_done_progress_params: Default::default(), | ||
763 | partial_result_params: Default::default(), | ||
764 | }, | ||
765 | json!([{ | ||
766 | "originSelectionRange": { | ||
767 | "end": { | ||
768 | "character": 10, | ||
769 | "line": 13 | ||
770 | }, | ||
771 | "start": { | ||
772 | "character": 8, | ||
773 | "line":13 | ||
774 | } | ||
775 | }, | ||
776 | "targetRange": { | ||
777 | "end": { | ||
778 | "character": 9, | ||
779 | "line": 1 | ||
780 | }, | ||
781 | "start": { | ||
782 | "character": 0, | ||
783 | "line":0 | ||
784 | } | ||
785 | }, | ||
786 | "targetSelectionRange": { | ||
787 | "end": { | ||
788 | "character": 8, | ||
789 | "line": 1 | ||
790 | }, | ||
791 | "start": { | ||
792 | "character": 7, | ||
793 | "line": 1 | ||
794 | } | ||
795 | }, | ||
796 | "targetUri": "file:///[..]src/main.rs" | ||
797 | }]), | ||
798 | ); | ||
799 | server.request::<GotoTypeDefinition>( | ||
800 | GotoDefinitionParams { | ||
801 | text_document_position_params: TextDocumentPositionParams::new( | ||
802 | server.doc_id("src/main.rs"), | ||
803 | Position::new(14, 9), | ||
804 | ), | ||
805 | work_done_progress_params: Default::default(), | ||
806 | partial_result_params: Default::default(), | ||
807 | }, | ||
808 | json!([{ | ||
809 | "originSelectionRange": { | ||
810 | "end": { | ||
811 | "character": 10, | ||
812 | "line": 14 | ||
813 | }, | ||
814 | "start": { | ||
815 | "character": 8, | ||
816 | "line":14 | ||
817 | } | ||
818 | }, | ||
819 | "targetRange": { | ||
820 | "end": { | ||
821 | "character": 9, | ||
822 | "line": 7 | ||
823 | }, | ||
824 | "start": { | ||
825 | "character": 0, | ||
826 | "line":6 | ||
827 | } | ||
828 | }, | ||
829 | "targetSelectionRange": { | ||
830 | "end": { | ||
831 | "character": 8, | ||
832 | "line": 7 | ||
833 | }, | ||
834 | "start": { | ||
835 | "character": 7, | ||
836 | "line": 7 | ||
837 | } | ||
838 | }, | ||
839 | "targetUri": "file:///[..]src/main.rs" | ||
840 | }]), | ||
841 | ); | ||
842 | } | ||