Add type keywords completions
Example --- ``` kw dyn kw fn kw for kw impl ```
This commit is contained in:
parent
f04279b06d
commit
70e3d8ca5c
6 changed files with 215 additions and 0 deletions
|
|
@ -111,6 +111,13 @@ impl Completions {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn add_type_keywords(&mut self, ctx: &CompletionContext<'_>) {
|
||||
self.add_keyword_snippet(ctx, "fn", "fn($1)");
|
||||
self.add_keyword_snippet(ctx, "dyn", "dyn $0");
|
||||
self.add_keyword_snippet(ctx, "impl", "impl $0");
|
||||
self.add_keyword_snippet(ctx, "for", "for<$1>");
|
||||
}
|
||||
|
||||
pub(crate) fn add_super_keyword(
|
||||
&mut self,
|
||||
ctx: &CompletionContext<'_>,
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ pub(crate) fn complete_type_path(
|
|||
};
|
||||
|
||||
acc.add_nameref_keywords_with_colon(ctx);
|
||||
acc.add_type_keywords(ctx);
|
||||
ctx.process_all_names(&mut |name, def, doc_aliases| {
|
||||
if scope_def_applicable(def) {
|
||||
acc.add_path_resolution(ctx, path_ctx, name, def, doc_aliases);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,10 @@ impl Tra$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
)
|
||||
|
|
@ -45,6 +49,10 @@ impl Trait for Str$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,10 @@ struct Foo<'lt, T, const C: usize> where $0 {}
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -95,6 +99,10 @@ struct Foo<'lt, T, const C: usize> where for<'a> $0 {}
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -120,6 +128,10 @@ impl Record {
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1492,6 +1492,10 @@ fn foo(_: a_$0) { }
|
|||
expect![[r#"
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -1506,6 +1510,10 @@ fn foo<T>() {
|
|||
tp T
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -1531,6 +1539,10 @@ fn foo<const N: $0>() {}
|
|||
expect![[r#"
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ struct Foo<'lt, T, const C: usize> {
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
)
|
||||
|
|
@ -50,6 +54,10 @@ struct Foo<'lt, T, const C: usize>(f$0);
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw pub
|
||||
kw pub(crate)
|
||||
kw pub(super)
|
||||
|
|
@ -76,6 +84,37 @@ fn x<'lt, T, const C: usize>() -> $0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fn_return_type_after_reference() {
|
||||
check_with_base_items(
|
||||
r#"
|
||||
fn x<'lt, T, const C: usize>(_: &()) -> &$0
|
||||
"#,
|
||||
expect![[r#"
|
||||
en Enum Enum
|
||||
ma makro!(…) macro_rules! makro
|
||||
md module
|
||||
st Record Record
|
||||
st Tuple Tuple
|
||||
st Unit Unit
|
||||
tt Trait
|
||||
tp T
|
||||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -106,6 +145,10 @@ fn foo() -> B$0 {
|
|||
bt u32 u32
|
||||
it ()
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
)
|
||||
|
|
@ -131,6 +174,10 @@ const FOO: $0 = Foo(2);
|
|||
bt u32 u32
|
||||
it Foo<i32>
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -157,6 +204,10 @@ fn f2() {
|
|||
bt u32 u32
|
||||
it i32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -185,6 +236,10 @@ fn f2() {
|
|||
bt u32 u32
|
||||
it u64
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -210,6 +265,10 @@ fn f2(x: u64) -> $0 {
|
|||
bt u32 u32
|
||||
it u64
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -236,6 +295,10 @@ fn f2(x: $0) {
|
|||
bt u32 u32
|
||||
it i32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -270,6 +333,10 @@ fn foo<'lt, T, const C: usize>() {
|
|||
bt u32 u32
|
||||
it a::Foo<a::Foo<i32>>
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -299,6 +366,10 @@ fn foo<'lt, T, const C: usize>() {
|
|||
bt u32 u32
|
||||
it Foo<i32>
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -325,6 +396,10 @@ fn foo<'lt, T, const C: usize>() {
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -392,6 +467,10 @@ fn foo<'lt, T: Trait2<$0>, const CONST_PARAM: usize>(_: T) {}
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -442,6 +521,10 @@ impl Tr<$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -487,6 +570,10 @@ fn f(t: impl MyTrait<u$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -512,6 +599,10 @@ fn f(t: impl MyTrait<u8, u$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -555,6 +646,10 @@ fn f(t: impl MyTrait<u$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -582,6 +677,10 @@ fn f(t: impl MyTrait<u8, u$0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -625,6 +724,10 @@ fn f(t: impl MyTrait<Item1 = $0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -650,6 +753,10 @@ fn f(t: impl MyTrait<Item1 = u8, Item2 = $0
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -666,6 +773,10 @@ fn f(t: impl MyTrait<C = $0
|
|||
ct CONST Unit
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -690,6 +801,10 @@ pub struct S;
|
|||
st Foo Foo
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
)
|
||||
|
|
@ -716,6 +831,10 @@ pub struct S;
|
|||
st S S
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
)
|
||||
|
|
@ -745,6 +864,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -765,6 +888,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -791,6 +918,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -808,6 +939,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -835,6 +970,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
un Union Union
|
||||
bt u32 u32
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -852,6 +991,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -870,6 +1013,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -889,6 +1036,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -907,6 +1058,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -923,6 +1078,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -941,6 +1100,10 @@ fn completes_const_and_type_generics_separately() {
|
|||
ct X usize
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -955,6 +1118,10 @@ fn foo<'a>() { S::<F$0, _>; }
|
|||
ct CONST Unit
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -968,6 +1135,10 @@ fn foo<'a>() { S::<'static, 'static, F$0, _>; }
|
|||
ct CONST Unit
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
@ -980,6 +1151,10 @@ fn foo<'a>() { S::<'static, F$0, _, _>; }
|
|||
lt 'a
|
||||
ma makro!(…) macro_rules! makro
|
||||
kw crate::
|
||||
kw dyn
|
||||
kw fn
|
||||
kw for
|
||||
kw impl
|
||||
kw self::
|
||||
"#]],
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue