add DefId

This commit is contained in:
Aleksey Kladov 2018-11-20 21:12:15 +03:00
parent 8086107b6a
commit c54b51fded
2 changed files with 32 additions and 1 deletions

View file

@ -8,7 +8,9 @@ use std::{
use rustc_hash::FxHashMap;
use crate::{
descriptors::module::ModuleId,
syntax_ptr::SyntaxPtr,
input::SourceRootId,
};
/// There are two principle ways to refer to things:
@ -89,6 +91,21 @@ macro_rules! impl_numeric_id {
pub(crate) struct FnId(u32);
impl_numeric_id!(FnId);
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub(crate) struct DefId(u32);
impl_numeric_id!(DefId);
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
enum DefLoc {
Module {
id: ModuleId,
source_root: SourceRootId,
},
Item {
ptr: SyntaxPtr,
}
}
pub(crate) trait IdDatabase: salsa::Database {
fn id_maps(&self) -> &IdMaps;
}
@ -110,4 +127,5 @@ impl IdMaps {
#[derive(Debug, Default)]
struct IdMapsInner {
fns: Mutex<Loc2IdMap<SyntaxPtr, FnId>>,
defs: Mutex<Loc2IdMap<DefLoc, DefId>>,
}