summaryrefslogtreecommitdiff
path: root/src/eval/module.rs
blob: 4460caececd5dcf245101de7667bf5c23ba20344 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use super::{Content, Scope};
use crate::source::{SourceId, SourceStore};

/// An evaluated module, ready for importing or layouting.
#[derive(Debug, Clone)]
pub struct Module {
    /// The top-level definitions that were bound in this module.
    pub scope: Scope,
    /// The module's layoutable contents.
    pub content: Content,
    /// The source file revisions this module depends on.
    pub deps: Vec<(SourceId, usize)>,
}

impl Module {
    /// Whether the module is still valid for the given sources.
    pub fn valid(&self, sources: &SourceStore) -> bool {
        self.deps.iter().all(|&(id, rev)| rev == sources.get(id).rev())
    }
}