mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 04:44:57 +00:00
Add AST/HIR for type args in path segments
This commit is contained in:
parent
688a45e00b
commit
5862542ded
5 changed files with 217 additions and 23 deletions
|
@ -147,7 +147,7 @@ impl Module {
|
|||
.def_id,
|
||||
);
|
||||
|
||||
for name in path.segments.iter() {
|
||||
for segment in path.segments.iter() {
|
||||
let curr = match curr_per_ns.as_ref().take_types() {
|
||||
Some(r) => r,
|
||||
None => {
|
||||
|
@ -163,15 +163,17 @@ impl Module {
|
|||
curr_per_ns = match curr.resolve(db) {
|
||||
Def::Module(m) => {
|
||||
let scope = m.scope(db);
|
||||
match scope.get(&name) {
|
||||
match scope.get(&segment.name) {
|
||||
Some(r) => r.def_id,
|
||||
None => PerNs::none(),
|
||||
}
|
||||
}
|
||||
Def::Enum(e) => {
|
||||
// enum variant
|
||||
let matching_variant =
|
||||
e.variants(db).into_iter().find(|(n, _variant)| n == name);
|
||||
let matching_variant = e
|
||||
.variants(db)
|
||||
.into_iter()
|
||||
.find(|(n, _variant)| n == &segment.name);
|
||||
|
||||
match matching_variant {
|
||||
Some((_n, variant)) => PerNs::both(variant.def_id(), e.def_id()),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue