@@ -715,8 +715,8 @@ pub struct S;
715
715
716
716
#[ test]
717
717
fn completes_const_and_type_generics_separately ( ) {
718
- let type_completion_cases = [
719
- // Function
718
+ // Function generic params
719
+ check (
720
720
r#"
721
721
struct Foo;
722
722
const X: usize = 0;
@@ -725,45 +725,48 @@ fn main() {
725
725
foo::<F$0, _>();
726
726
}
727
727
"# ,
728
- // Method
728
+ expect ! [ [ r#"
729
+ en Enum
730
+ ma makro!(…) macro_rules! makro
731
+ md module
732
+ st Foo
733
+ st Record
734
+ st Tuple
735
+ st Unit
736
+ tt Trait
737
+ un Union
738
+ bt u32
739
+ kw crate::
740
+ kw self::
741
+ "# ] ] ,
742
+ ) ;
743
+ check (
729
744
r#"
730
- const X: usize = 0;
731
745
struct Foo;
732
- impl Foo { fn bar<const N: usize, T>(self) {} }
746
+ const X: usize = 0;
747
+ fn foo<T, const N: usize>() {}
733
748
fn main() {
734
- Foo.bar ::<_, $0>();
749
+ foo ::<_, $0>();
735
750
}
736
751
"# ,
737
- ] ;
738
-
739
- for case in type_completion_cases {
740
- check (
741
- case,
742
- expect ! [ [ r#"
743
- en Enum
744
- ma makro!(…) macro_rules! makro
745
- md module
746
- st Foo
747
- st Record
748
- st Tuple
749
- st Unit
750
- tt Trait
751
- un Union
752
- bt u32
753
- kw crate::
754
- kw self::
755
- "# ] ] ,
756
- )
757
- }
752
+ expect ! [ [ r#"
753
+ ct CONST
754
+ ct X
755
+ ma makro!(…) macro_rules! makro
756
+ kw crate::
757
+ kw self::
758
+ "# ] ] ,
759
+ ) ;
758
760
761
+ // Method generic params
759
762
check (
760
763
r#"
761
764
const X: usize = 0;
762
765
struct Foo;
763
- trait Bar {
764
- type Baz<T, const X: usize>;
766
+ impl Foo { fn bar<const N: usize, T>(self) {} }
767
+ fn main() {
768
+ Foo.bar::<_, $0>();
765
769
}
766
- fn foo(_: impl Bar<Baz<F$0, 0> = ()>) {}
767
770
"# ,
768
771
expect ! [ [ r#"
769
772
en Enum
@@ -773,35 +776,58 @@ fn foo(_: impl Bar<Baz<F$0, 0> = ()>) {}
773
776
st Record
774
777
st Tuple
775
778
st Unit
776
- tt Bar
777
779
tt Trait
778
780
un Union
779
781
bt u32
780
782
kw crate::
781
783
kw self::
782
784
"# ] ] ,
783
785
) ;
784
-
785
- let const_completion_cases = [
786
- // Function params
786
+ check (
787
787
r#"
788
- struct Foo;
789
788
const X: usize = 0;
790
- fn foo<T, const N: usize>() {}
789
+ struct Foo;
790
+ impl Foo { fn bar<const N: usize, T>(self) {} }
791
791
fn main() {
792
- foo ::<_, $0 >();
792
+ Foo.bar ::<X$0, _ >();
793
793
}
794
794
"# ,
795
- // Method params
795
+ expect ! [ [ r#"
796
+ ct CONST
797
+ ct X
798
+ ma makro!(…) macro_rules! makro
799
+ kw crate::
800
+ kw self::
801
+ "# ] ] ,
802
+ ) ;
803
+
804
+ // Associated type generic params
805
+ check (
796
806
r#"
797
807
const X: usize = 0;
798
808
struct Foo;
799
- impl Foo { fn bar<const N: usize, T>(self) {} }
800
- fn main() {
801
- Foo.bar::<X$0, _>();
809
+ trait Bar {
810
+ type Baz<T, const X: usize>;
802
811
}
812
+ fn foo(_: impl Bar<Baz<F$0, 0> = ()>) {}
803
813
"# ,
804
- // Associated type params
814
+ expect ! [ [ r#"
815
+ en Enum
816
+ ma makro!(…) macro_rules! makro
817
+ md module
818
+ st Foo
819
+ st Record
820
+ st Tuple
821
+ st Unit
822
+ tt Bar
823
+ tt Trait
824
+ un Union
825
+ bt u32
826
+ kw crate::
827
+ kw self::
828
+ "# ] ] ,
829
+ ) ;
830
+ check (
805
831
r#"
806
832
const X: usize = 0;
807
833
struct Foo;
@@ -810,15 +836,35 @@ trait Bar {
810
836
}
811
837
fn foo<T: Bar<Baz<(), $0> = ()>>() {}
812
838
"# ,
813
- // Type params
839
+ expect ! [ [ r#"
840
+ ct CONST
841
+ ct X
842
+ ma makro!(…) macro_rules! makro
843
+ kw crate::
844
+ kw self::
845
+ "# ] ] ,
846
+ ) ;
847
+
848
+ // Type generic params
849
+ check (
814
850
r#"
815
851
const X: usize = 0;
816
852
struct Foo<T, const N: usize>(T);
817
853
fn main() {
818
854
let _: Foo::<_, $0> = Foo(());
819
855
}
820
856
"# ,
821
- // Enum variant params
857
+ expect ! [ [ r#"
858
+ ct CONST
859
+ ct X
860
+ ma makro!(…) macro_rules! makro
861
+ kw crate::
862
+ kw self::
863
+ "# ] ] ,
864
+ ) ;
865
+
866
+ // Type alias generic params
867
+ check (
822
868
r#"
823
869
const X: usize = 0;
824
870
struct Foo<T, const N: usize>(T);
@@ -827,39 +873,64 @@ fn main() {
827
873
let _: Bar::<X$0, _> = Bar(());
828
874
}
829
875
"# ,
876
+ expect ! [ [ r#"
877
+ ct CONST
878
+ ct X
879
+ ma makro!(…) macro_rules! makro
880
+ kw crate::
881
+ kw self::
882
+ "# ] ] ,
883
+ ) ;
884
+
885
+ // Enum variant params
886
+ check (
830
887
r#"
831
888
const X: usize = 0;
832
889
enum Foo<T, const N: usize> { A(T), B }
833
890
fn main() {
834
891
Foo::B::<(), $0>;
835
892
}
836
893
"# ,
837
- // Trait params
894
+ expect ! [ [ r#"
895
+ ct CONST
896
+ ct X
897
+ ma makro!(…) macro_rules! makro
898
+ kw crate::
899
+ kw self::
900
+ "# ] ] ,
901
+ ) ;
902
+
903
+ // Trait params
904
+ check (
838
905
r#"
839
906
const X: usize = 0;
840
907
trait Foo<T, const N: usize> {}
841
908
impl Foo<(), $0> for () {}
842
909
"# ,
843
- // Trait alias params
910
+ expect ! [ [ r#"
911
+ ct CONST
912
+ ct X
913
+ ma makro!(…) macro_rules! makro
914
+ kw crate::
915
+ kw self::
916
+ "# ] ] ,
917
+ ) ;
918
+
919
+ // Trait alias params
920
+ check (
844
921
r#"
845
922
#![feature(trait_alias)]
846
923
const X: usize = 0;
847
924
trait Foo<T, const N: usize> {}
848
925
trait Bar<const M: usize, U> = Foo<U, M>;
849
926
fn foo<T: Bar<X$0, ()>>() {}
850
927
"# ,
851
- ] ;
852
-
853
- for case in const_completion_cases {
854
- check (
855
- case,
856
- expect ! [ [ r#"
857
- ct CONST
858
- ct X
859
- ma makro!(…) macro_rules! makro
860
- kw crate::
861
- kw self::
862
- "# ] ] ,
863
- ) ;
864
- }
928
+ expect ! [ [ r#"
929
+ ct CONST
930
+ ct X
931
+ ma makro!(…) macro_rules! makro
932
+ kw crate::
933
+ kw self::
934
+ "# ] ] ,
935
+ ) ;
865
936
}
0 commit comments