mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-03 07:04:49 +00:00
Cheese const tests as they requre an ident before becoming a CONST_DEF.
This commit is contained in:
parent
877cfbacf9
commit
43e62a87ab
1 changed files with 21 additions and 28 deletions
|
@ -16,15 +16,10 @@ use ra_syntax::{
|
||||||
use ra_assists::utils::get_missing_impl_items;
|
use ra_assists::utils::get_missing_impl_items;
|
||||||
|
|
||||||
pub(crate) fn complete_trait_impl(acc: &mut Completions, ctx: &CompletionContext) {
|
pub(crate) fn complete_trait_impl(acc: &mut Completions, ctx: &CompletionContext) {
|
||||||
let trigger = ctx.token
|
let trigger = ctx.token.ancestors().find(|p| match p.kind() {
|
||||||
.ancestors()
|
SyntaxKind::FN_DEF | SyntaxKind::TYPE_ALIAS_DEF | SyntaxKind::CONST_DEF => true,
|
||||||
.find(|p| match p.kind() {
|
_ => false,
|
||||||
SyntaxKind::FN_DEF |
|
});
|
||||||
SyntaxKind::TYPE_ALIAS_DEF |
|
|
||||||
SyntaxKind::CONST_DEF |
|
|
||||||
SyntaxKind::ITEM_LIST => true,
|
|
||||||
_ => false
|
|
||||||
});
|
|
||||||
|
|
||||||
let impl_block = trigger
|
let impl_block = trigger
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
@ -37,40 +32,38 @@ pub(crate) fn complete_trait_impl(acc: &mut Completions, ctx: &CompletionContext
|
||||||
SyntaxKind::FN_DEF => {
|
SyntaxKind::FN_DEF => {
|
||||||
for missing_fn in get_missing_impl_items(ctx.db, &ctx.analyzer, &impl_block)
|
for missing_fn in get_missing_impl_items(ctx.db, &ctx.analyzer, &impl_block)
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|item| {
|
.filter_map(|item| match item {
|
||||||
match item {
|
hir::AssocItem::Function(fn_item) => Some(fn_item),
|
||||||
hir::AssocItem::Function(fn_item) => Some(fn_item),
|
_ => None,
|
||||||
_ => None
|
})
|
||||||
}
|
|
||||||
})
|
|
||||||
{
|
{
|
||||||
add_function_impl(acc, ctx, &missing_fn);
|
add_function_impl(acc, ctx, &missing_fn);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
SyntaxKind::TYPE_ALIAS_DEF => {
|
SyntaxKind::TYPE_ALIAS_DEF => {
|
||||||
for missing_fn in get_missing_impl_items(ctx.db, &ctx.analyzer, &impl_block)
|
for missing_fn in get_missing_impl_items(ctx.db, &ctx.analyzer, &impl_block)
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|item| match item {
|
.filter_map(|item| match item {
|
||||||
hir::AssocItem::TypeAlias(type_item) => Some(type_item),
|
hir::AssocItem::TypeAlias(type_item) => Some(type_item),
|
||||||
_ => None
|
_ => None,
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
add_type_alias_impl(acc, ctx, &missing_fn);
|
add_type_alias_impl(acc, ctx, &missing_fn);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
SyntaxKind::CONST_DEF => {
|
SyntaxKind::CONST_DEF => {
|
||||||
for missing_fn in get_missing_impl_items(ctx.db, &ctx.analyzer, &impl_block)
|
for missing_fn in get_missing_impl_items(ctx.db, &ctx.analyzer, &impl_block)
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|item| match item {
|
.filter_map(|item| match item {
|
||||||
hir::AssocItem::Const(const_item) => Some(const_item),
|
hir::AssocItem::Const(const_item) => Some(const_item),
|
||||||
_ => None
|
_ => None,
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
add_const_impl(acc, ctx, &missing_fn);
|
add_const_impl(acc, ctx, &missing_fn);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
@ -309,7 +302,7 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Test for () {
|
impl Test for () {
|
||||||
const<|>
|
const S<|>
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
);
|
||||||
|
@ -317,8 +310,8 @@ mod tests {
|
||||||
[
|
[
|
||||||
CompletionItem {
|
CompletionItem {
|
||||||
label: "const SOME_CONST: u16 = ",
|
label: "const SOME_CONST: u16 = ",
|
||||||
source_range: [132; 132),
|
source_range: [133; 134),
|
||||||
delete: [132; 132),
|
delete: [133; 134),
|
||||||
insert: "const SOME_CONST: u16 = ",
|
insert: "const SOME_CONST: u16 = ",
|
||||||
kind: Const,
|
kind: Const,
|
||||||
},
|
},
|
||||||
|
@ -335,7 +328,7 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Test for () {
|
impl Test for () {
|
||||||
const<|>
|
const S<|>
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
);
|
||||||
|
@ -343,8 +336,8 @@ mod tests {
|
||||||
[
|
[
|
||||||
CompletionItem {
|
CompletionItem {
|
||||||
label: "const SOME_CONST: u16 = ",
|
label: "const SOME_CONST: u16 = ",
|
||||||
source_range: [137; 137),
|
source_range: [138; 139),
|
||||||
delete: [137; 137),
|
delete: [138; 139),
|
||||||
insert: "const SOME_CONST: u16 = ",
|
insert: "const SOME_CONST: u16 = ",
|
||||||
kind: Const,
|
kind: Const,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue