summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/typst-cli/src/query.rs3
-rw-r--r--crates/typst-eval/src/lib.rs4
-rw-r--r--crates/typst-library/src/foundations/mod.rs12
-rw-r--r--crates/typst-library/src/model/bibliography.rs6
-rw-r--r--crates/typst-library/src/routines.rs1
-rw-r--r--tests/suite/foundations/eval.typ6
6 files changed, 27 insertions, 5 deletions
diff --git a/crates/typst-cli/src/query.rs b/crates/typst-cli/src/query.rs
index 610f23cd..7806e456 100644
--- a/crates/typst-cli/src/query.rs
+++ b/crates/typst-cli/src/query.rs
@@ -2,6 +2,7 @@ use comemo::Track;
use ecow::{eco_format, EcoString};
use serde::Serialize;
use typst::diag::{bail, HintedStrResult, StrResult, Warned};
+use typst::engine::Sink;
use typst::foundations::{Content, IntoValue, LocatableSelector, Scope};
use typst::layout::PagedDocument;
use typst::syntax::Span;
@@ -58,6 +59,8 @@ fn retrieve(
let selector = eval_string(
&typst::ROUTINES,
world.track(),
+ // TODO: propagate warnings
+ Sink::new().track_mut(),
&command.selector,
Span::detached(),
EvalMode::Code,
diff --git a/crates/typst-eval/src/lib.rs b/crates/typst-eval/src/lib.rs
index 5eae7c1d..586da26b 100644
--- a/crates/typst-eval/src/lib.rs
+++ b/crates/typst-eval/src/lib.rs
@@ -101,6 +101,7 @@ pub fn eval(
pub fn eval_string(
routines: &Routines,
world: Tracked<dyn World + '_>,
+ sink: TrackedMut<Sink>,
string: &str,
span: Span,
mode: EvalMode,
@@ -121,7 +122,6 @@ pub fn eval_string(
}
// Prepare the engine.
- let mut sink = Sink::new();
let introspector = Introspector::default();
let traced = Traced::default();
let engine = Engine {
@@ -129,7 +129,7 @@ pub fn eval_string(
world,
introspector: introspector.track(),
traced: traced.track(),
- sink: sink.track_mut(),
+ sink,
route: Route::default(),
};
diff --git a/crates/typst-library/src/foundations/mod.rs b/crates/typst-library/src/foundations/mod.rs
index 8e3aa060..d42be15b 100644
--- a/crates/typst-library/src/foundations/mod.rs
+++ b/crates/typst-library/src/foundations/mod.rs
@@ -77,6 +77,7 @@ pub use {
indexmap::IndexMap,
};
+use comemo::TrackedMut;
use ecow::EcoString;
use typst_syntax::Spanned;
@@ -297,5 +298,14 @@ pub fn eval(
for (key, value) in dict {
scope.bind(key.into(), Binding::new(value, span));
}
- (engine.routines.eval_string)(engine.routines, engine.world, &text, span, mode, scope)
+
+ (engine.routines.eval_string)(
+ engine.routines,
+ engine.world,
+ TrackedMut::reborrow_mut(&mut engine.sink),
+ &text,
+ span,
+ mode,
+ scope,
+ )
}
diff --git a/crates/typst-library/src/model/bibliography.rs b/crates/typst-library/src/model/bibliography.rs
index b11c6178..51e3b03b 100644
--- a/crates/typst-library/src/model/bibliography.rs
+++ b/crates/typst-library/src/model/bibliography.rs
@@ -6,7 +6,7 @@ use std::num::NonZeroUsize;
use std::path::Path;
use std::sync::{Arc, LazyLock};
-use comemo::Tracked;
+use comemo::{Track, Tracked};
use ecow::{eco_format, EcoString, EcoVec};
use hayagriva::archive::ArchivedStyle;
use hayagriva::io::BibLaTeXError;
@@ -20,7 +20,7 @@ use typst_syntax::{Span, Spanned};
use typst_utils::{Get, ManuallyHash, NonZeroExt, PicoStr};
use crate::diag::{bail, error, At, FileError, HintedStrResult, SourceResult, StrResult};
-use crate::engine::Engine;
+use crate::engine::{Engine, Sink};
use crate::foundations::{
elem, Bytes, CastInfo, Content, Derived, FromValue, IntoValue, Label, NativeElement,
OneOrMultiple, Packed, Reflect, Scope, Show, ShowSet, Smart, StyleChain, Styles,
@@ -999,6 +999,8 @@ impl ElemRenderer<'_> {
(self.routines.eval_string)(
self.routines,
self.world,
+ // TODO: propagate warnings
+ Sink::new().track_mut(),
math,
self.span,
EvalMode::Math,
diff --git a/crates/typst-library/src/routines.rs b/crates/typst-library/src/routines.rs
index b283052a..6f0cb32b 100644
--- a/crates/typst-library/src/routines.rs
+++ b/crates/typst-library/src/routines.rs
@@ -55,6 +55,7 @@ routines! {
fn eval_string(
routines: &Routines,
world: Tracked<dyn World + '_>,
+ sink: TrackedMut<Sink>,
string: &str,
span: Span,
mode: EvalMode,
diff --git a/tests/suite/foundations/eval.typ b/tests/suite/foundations/eval.typ
index f85146b2..85f43911 100644
--- a/tests/suite/foundations/eval.typ
+++ b/tests/suite/foundations/eval.typ
@@ -52,3 +52,9 @@ _Tiger!_
#eval(mode: "math", "f(a) = cases(a + b\, space space x >= 3,a + b\, space space x = 5)")
$f(a) = cases(a + b\, space space x >= 3,a + b\, space space x = 5)$
+
+--- issue-6067-eval-warnings ---
+// Test that eval shows warnings from the executed code.
+// Warning: 7-11 no text within stars
+// Hint: 7-11 using multiple consecutive stars (e.g. **) has no additional effect
+#eval("**", mode: "markup")