diff options
Diffstat (limited to 'src/eval/module.rs')
| -rw-r--r-- | src/eval/module.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/eval/module.rs b/src/eval/module.rs new file mode 100644 index 00000000..478c76b7 --- /dev/null +++ b/src/eval/module.rs @@ -0,0 +1,20 @@ +use super::{Scope, Template}; +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 template: Template, + /// 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()) + } +} |
