From e1f29d6cb9437a4afb2e4fc4ee10a5b8717ab9fa Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 22 Feb 2022 14:31:09 +0100 Subject: Rework the core context --- src/eval/module.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/eval/module.rs (limited to 'src/eval/module.rs') 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()) + } +} -- cgit v1.2.3