mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-03 07:04:49 +00:00
wip
This commit is contained in:
parent
b64e5b3919
commit
784379eb79
2 changed files with 47 additions and 0 deletions
|
@ -884,6 +884,16 @@ fn classify_name_ref(
|
||||||
};
|
};
|
||||||
let make_path_kind_type = |ty: ast::Type| {
|
let make_path_kind_type = |ty: ast::Type| {
|
||||||
let location = type_location(ty.syntax());
|
let location = type_location(ty.syntax());
|
||||||
|
if let Some(p) = ty.syntax().parent() {
|
||||||
|
if ast::GenericArg::can_cast(p.kind()) || ast::GenericArgList::can_cast(p.kind()) {
|
||||||
|
if let Some(p) = p.parent().and_then(|p| p.parent()) {
|
||||||
|
if let Some(segment) = ast::PathSegment::cast(p) {
|
||||||
|
let path = segment.parent_path().top_path();
|
||||||
|
dbg!(sema.resolve_path(&path));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
PathKind::Type { location: location.unwrap_or(TypeLocation::Other) }
|
PathKind::Type { location: location.unwrap_or(TypeLocation::Other) }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -719,3 +719,40 @@ pub struct S;
|
||||||
"#]],
|
"#]],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn completes_const_and_type_generics_separately() {
|
||||||
|
check(
|
||||||
|
r#"
|
||||||
|
struct Foo;
|
||||||
|
const X: usize = 0;
|
||||||
|
mod foo {
|
||||||
|
fn foo<T>() {}
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
self::foo::foo::<F$0>();
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
expect![[r#"
|
||||||
|
st Foo
|
||||||
|
bt u32
|
||||||
|
kw crate::
|
||||||
|
kw self::
|
||||||
|
"#]],
|
||||||
|
);
|
||||||
|
check(
|
||||||
|
r#"
|
||||||
|
struct Foo;
|
||||||
|
const X: usize = 0;
|
||||||
|
fn foo<const X: usize>() {}
|
||||||
|
fn main() {
|
||||||
|
foo::<F$0>();
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
expect![[r#"
|
||||||
|
ct X
|
||||||
|
kw crate::
|
||||||
|
kw self::
|
||||||
|
"#]],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue