schala/schala-lang/language/src/symbol_table/source_map.rs

28 lines
568 B
Rust

use std::collections::HashMap;
use crate::ast::ItemId;
use crate::tokenizing::Location;
//TODO rename this type to make its purpose clearer
pub struct SourceMap {
map: HashMap<ItemId, Location>
}
impl SourceMap {
pub fn new() -> SourceMap {
SourceMap { map: HashMap::new() }
}
pub(crate) fn add_location(&mut self, id: &ItemId, loc: Location) {
self.map.insert(id.clone(), loc);
}
pub(crate) fn lookup(&self, id: &ItemId) -> Option<Location> {
match self.map.get(id) {
Some(loc) => Some(loc.clone()),
None => None
}
}
}