mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 13:51:31 +00:00
make file id repr private again
This commit is contained in:
parent
5b803055b7
commit
dba767802d
1 changed files with 17 additions and 12 deletions
|
@ -39,20 +39,23 @@ macro_rules! impl_intern_key {
|
||||||
/// finite (because everything bottoms out at the real `FileId`) and small
|
/// finite (because everything bottoms out at the real `FileId`) and small
|
||||||
/// (`MacroCallId` uses the location interner).
|
/// (`MacroCallId` uses the location interner).
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
pub enum HirFileId {
|
pub struct HirFileId(HirFileIdRepr);
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
|
enum HirFileIdRepr {
|
||||||
FileId(FileId),
|
FileId(FileId),
|
||||||
MacroFile(MacroFile),
|
MacroFile(MacroFile),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<FileId> for HirFileId {
|
impl From<FileId> for HirFileId {
|
||||||
fn from(id: FileId) -> Self {
|
fn from(id: FileId) -> Self {
|
||||||
HirFileId::FileId(id)
|
HirFileId(HirFileIdRepr::FileId(id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<MacroFile> for HirFileId {
|
impl From<MacroFile> for HirFileId {
|
||||||
fn from(id: MacroFile) -> Self {
|
fn from(id: MacroFile) -> Self {
|
||||||
HirFileId::MacroFile(id)
|
HirFileId(HirFileIdRepr::MacroFile(id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,9 +63,9 @@ impl HirFileId {
|
||||||
/// For macro-expansion files, returns the file original source file the
|
/// For macro-expansion files, returns the file original source file the
|
||||||
/// expansion originated from.
|
/// expansion originated from.
|
||||||
pub fn original_file(self, db: &impl AstDatabase) -> FileId {
|
pub fn original_file(self, db: &impl AstDatabase) -> FileId {
|
||||||
match self {
|
match self.0 {
|
||||||
HirFileId::FileId(file_id) => file_id,
|
HirFileIdRepr::FileId(file_id) => file_id,
|
||||||
HirFileId::MacroFile(macro_file) => {
|
HirFileIdRepr::MacroFile(macro_file) => {
|
||||||
let loc = db.lookup_intern_macro(macro_file.macro_call_id);
|
let loc = db.lookup_intern_macro(macro_file.macro_call_id);
|
||||||
loc.ast_id.file_id().original_file(db)
|
loc.ast_id.file_id().original_file(db)
|
||||||
}
|
}
|
||||||
|
@ -71,9 +74,9 @@ impl HirFileId {
|
||||||
|
|
||||||
/// Get the crate which the macro lives in, if it is a macro file.
|
/// Get the crate which the macro lives in, if it is a macro file.
|
||||||
pub fn macro_crate(self, db: &impl AstDatabase) -> Option<CrateId> {
|
pub fn macro_crate(self, db: &impl AstDatabase) -> Option<CrateId> {
|
||||||
match self {
|
match self.0 {
|
||||||
HirFileId::FileId(_) => None,
|
HirFileIdRepr::FileId(_) => None,
|
||||||
HirFileId::MacroFile(macro_file) => {
|
HirFileIdRepr::MacroFile(macro_file) => {
|
||||||
let loc = db.lookup_intern_macro(macro_file.macro_call_id);
|
let loc = db.lookup_intern_macro(macro_file.macro_call_id);
|
||||||
Some(loc.def.krate)
|
Some(loc.def.krate)
|
||||||
}
|
}
|
||||||
|
@ -215,9 +218,11 @@ pub(crate) fn parse_or_expand_query(
|
||||||
db: &impl AstDatabase,
|
db: &impl AstDatabase,
|
||||||
file_id: HirFileId,
|
file_id: HirFileId,
|
||||||
) -> Option<SyntaxNode> {
|
) -> Option<SyntaxNode> {
|
||||||
match file_id {
|
match file_id.0 {
|
||||||
HirFileId::FileId(file_id) => Some(db.parse(file_id).tree().syntax().clone()),
|
HirFileIdRepr::FileId(file_id) => Some(db.parse(file_id).tree().syntax().clone()),
|
||||||
HirFileId::MacroFile(macro_file) => db.parse_macro(macro_file).map(|it| it.syntax_node()),
|
HirFileIdRepr::MacroFile(macro_file) => {
|
||||||
|
db.parse_macro(macro_file).map(|it| it.syntax_node())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue