diff options
Diffstat (limited to 'src/exec/context.rs')
| -rw-r--r-- | src/exec/context.rs | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/src/exec/context.rs b/src/exec/context.rs index 4d351692..2d419a56 100644 --- a/src/exec/context.rs +++ b/src/exec/context.rs @@ -2,13 +2,12 @@ use std::mem; use std::rc::Rc; use super::{Exec, ExecWithMap, State}; -use crate::diag::{Diag, DiagSet, Pass}; use crate::eval::{ExprMap, Template}; use crate::geom::{Align, Dir, Gen, GenAxis, Length, Linear, Sides, Size}; use crate::layout::{ LayoutNode, LayoutTree, PadNode, PageRun, ParChild, ParNode, StackChild, StackNode, }; -use crate::syntax::{Span, SyntaxTree}; +use crate::syntax::SyntaxTree; use crate::util::EcoString; use crate::Context; @@ -16,8 +15,6 @@ use crate::Context; pub struct ExecContext { /// The active execution state. pub state: State, - /// Execution diagnostics. - pub diags: DiagSet, /// The tree of finished page runs. tree: LayoutTree, /// When we are building the top-level stack, this contains metrics of the @@ -32,18 +29,12 @@ impl ExecContext { pub fn new(ctx: &mut Context) -> Self { Self { state: ctx.state.clone(), - diags: DiagSet::new(), tree: LayoutTree { runs: vec![] }, page: Some(PageBuilder::new(&ctx.state, true)), stack: StackBuilder::new(&ctx.state), } } - /// Add a diagnostic. - pub fn diag(&mut self, diag: Diag) { - self.diags.insert(diag); - } - /// Execute a template and return the result as a stack node. pub fn exec_template_stack(&mut self, template: &Template) -> StackNode { self.exec_stack(|ctx| template.exec(ctx)) @@ -127,21 +118,19 @@ impl ExecContext { } /// Apply a forced page break. - pub fn pagebreak(&mut self, keep: bool, hard: bool, span: Span) { + pub fn pagebreak(&mut self, keep: bool, hard: bool) { if let Some(builder) = &mut self.page { let page = mem::replace(builder, PageBuilder::new(&self.state, hard)); let stack = mem::replace(&mut self.stack, StackBuilder::new(&self.state)); self.tree.runs.extend(page.build(stack.build(), keep)); - } else { - self.diag(error!(span, "cannot modify page from here")); } } /// Finish execution and return the created layout tree. - pub fn finish(mut self) -> Pass<LayoutTree> { + pub fn finish(mut self) -> LayoutTree { assert!(self.page.is_some()); - self.pagebreak(true, false, Span::default()); - Pass::new(self.tree, self.diags) + self.pagebreak(true, false); + self.tree } fn make_text_node(&self, text: impl Into<EcoString>) -> ParChild { |
