diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-06-12 15:40:43 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-06-12 15:42:01 +0200 |
| commit | 378ebe5f5601f11c3f428c17bed492012feb251e (patch) | |
| tree | 4530bf009844faca40ca4fd6d0b9251fd51ef587 /src/eval/mod.rs | |
| parent | 19bf1f58944a42f17903869c162a33aba22b80b0 (diff) | |
Delayed errors
Fixes #785. Thanks to @Dherse for the idea!
Diffstat (limited to 'src/eval/mod.rs')
| -rw-r--r-- | src/eval/mod.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs index e6016218..fe11606a 100644 --- a/src/eval/mod.rs +++ b/src/eval/mod.rs @@ -62,9 +62,6 @@ use ecow::{EcoString, EcoVec}; use unicode_segmentation::UnicodeSegmentation; use self::func::{CapturesVisitor, Closure}; -use crate::diag::{ - bail, error, At, SourceError, SourceResult, StrResult, Trace, Tracepoint, -}; use crate::model::{ Content, Introspector, Label, Locator, Recipe, ShowableSelector, Styles, Transform, Unlabellable, Vt, @@ -75,6 +72,10 @@ use crate::syntax::{ }; use crate::util::PathExt; use crate::World; +use crate::{ + diag::{bail, error, At, SourceError, SourceResult, StrResult, Trace, Tracepoint}, + model::DelayedErrors, +}; const MAX_ITERATIONS: usize = 10_000; const MAX_CALL_DEPTH: usize = 64; @@ -102,11 +103,13 @@ pub fn eval( // Prepare VT. let mut locator = Locator::default(); let introspector = Introspector::default(); + let mut delayed = DelayedErrors::default(); let vt = Vt { world, - tracer, - locator: &mut locator, introspector: introspector.track(), + locator: &mut locator, + delayed: delayed.track_mut(), + tracer, }; // Prepare VM. @@ -151,12 +154,14 @@ pub fn eval_string( // Prepare VT. let mut tracer = Tracer::default(); let mut locator = Locator::default(); + let mut delayed = DelayedErrors::default(); let introspector = Introspector::default(); let vt = Vt { world, - tracer: tracer.track_mut(), - locator: &mut locator, introspector: introspector.track(), + locator: &mut locator, + delayed: delayed.track_mut(), + tracer: tracer.track_mut(), }; // Prepare VM. |
