Move ModPath->ast::Path function to IDE layer

closes #6092
This commit is contained in:
Aleksey Kladov 2020-10-06 16:19:18 +02:00
parent 9507a01e9e
commit 2090b534fc
8 changed files with 65 additions and 46 deletions

View file

@ -13,7 +13,7 @@ use hir_expand::{
hygiene::Hygiene,
name::{AsName, Name},
};
use syntax::ast::{self, make};
use syntax::ast::{self};
use crate::{
type_ref::{TypeBound, TypeRef},
@ -100,26 +100,6 @@ impl ModPath {
}
self.segments.first()
}
pub fn to_ast_path(&self) -> ast::Path {
let mut segments = Vec::new();
let mut is_abs = false;
match self.kind {
PathKind::Plain => {}
PathKind::Super(0) => segments.push(make::path_segment_self()),
PathKind::Super(n) => segments.extend((0..n).map(|_| make::path_segment_super())),
PathKind::Crate => segments.push(make::path_segment_crate()),
PathKind::Abs => is_abs = true,
PathKind::DollarCrate(_) => (),
}
segments.extend(
self.segments
.iter()
.map(|segment| make::path_segment(make::name_ref(&segment.to_string()))),
);
make::path_from_segments(segments, is_abs)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]