mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 01:17:27 +00:00
fix: Don't complete marker traits in expression position
This commit is contained in:
parent
74abd44a26
commit
ce7541260d
4 changed files with 14 additions and 9 deletions
|
@ -202,10 +202,21 @@ pub(crate) fn complete_expr_path(
|
|||
}
|
||||
}
|
||||
}
|
||||
ctx.process_all_names(&mut |name, def| {
|
||||
if scope_def_applicable(def) {
|
||||
acc.add_path_resolution(ctx, path_ctx, name, def);
|
||||
ctx.process_all_names(&mut |name, def| match def {
|
||||
ScopeDef::ModuleDef(hir::ModuleDef::Trait(t)) => {
|
||||
let assocs = t.items_with_supertraits(ctx.db);
|
||||
match &*assocs {
|
||||
// traits with no assoc items are unusable as expressions since
|
||||
// there is no associated item path that can be constructed with them
|
||||
[] => (),
|
||||
// FIXME: Render the assoc item with the trait qualified
|
||||
&[_item] => acc.add_path_resolution(ctx, path_ctx, name, def),
|
||||
// FIXME: Append `::` to the thing here, since a trait on its own won't work
|
||||
[..] => acc.add_path_resolution(ctx, path_ctx, name, def),
|
||||
}
|
||||
}
|
||||
_ if scope_def_applicable(def) => acc.add_path_resolution(ctx, path_ctx, name, def),
|
||||
_ => (),
|
||||
});
|
||||
|
||||
if is_func_update.is_none() {
|
||||
|
|
|
@ -1347,7 +1347,6 @@ fn main() {
|
|||
fn main() []
|
||||
fn foo(…) []
|
||||
md core []
|
||||
tt Sized []
|
||||
"#]],
|
||||
)
|
||||
}
|
||||
|
@ -1394,7 +1393,6 @@ fn main() {
|
|||
fn main() []
|
||||
fn foo(…) []
|
||||
md core []
|
||||
tt Sized []
|
||||
"#]],
|
||||
)
|
||||
}
|
||||
|
@ -1492,7 +1490,6 @@ fn main() {
|
|||
fn &bar() [type]
|
||||
fn foo(…) []
|
||||
md core []
|
||||
tt Sized []
|
||||
"#]],
|
||||
)
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ fn baz() {
|
|||
st Record
|
||||
st Tuple
|
||||
st Unit
|
||||
tt Trait
|
||||
un Union
|
||||
ev TupleV(…) TupleV(u32)
|
||||
bt u32
|
||||
|
@ -137,7 +136,6 @@ impl Unit {
|
|||
st Record
|
||||
st Tuple
|
||||
st Unit
|
||||
tt Trait
|
||||
tp TypeParam
|
||||
un Union
|
||||
ev TupleV(…) TupleV(u32)
|
||||
|
|
|
@ -167,7 +167,6 @@ fn main() {
|
|||
st Foo
|
||||
st Foo {…} Foo { foo1: u32, foo2: u32 }
|
||||
tt Default
|
||||
tt Sized
|
||||
bt u32
|
||||
kw crate::
|
||||
kw self::
|
||||
|
|
Loading…
Reference in a new issue