mirror of
https://github.com/typst/typst
synced 2025-05-20 03:55:29 +08:00
Only print unique diagnostics (#2385)
This commit is contained in:
parent
e800b08f1a
commit
76d4c39ce4
@ -52,6 +52,7 @@ pub mod model;
|
|||||||
#[doc(inline)]
|
#[doc(inline)]
|
||||||
pub use typst_syntax as syntax;
|
pub use typst_syntax as syntax;
|
||||||
|
|
||||||
|
use std::collections::HashSet;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
|
|
||||||
use comemo::{Prehashed, Track, TrackedMut};
|
use comemo::{Prehashed, Track, TrackedMut};
|
||||||
@ -79,16 +80,27 @@ pub fn compile(world: &dyn World, tracer: &mut Tracer) -> SourceResult<Document>
|
|||||||
let world = world.track();
|
let world = world.track();
|
||||||
let mut tracer = tracer.track_mut();
|
let mut tracer = tracer.track_mut();
|
||||||
|
|
||||||
// Evaluate the source file into a module.
|
// Try to evaluate the source file into a module.
|
||||||
let module = eval::eval(
|
let module = eval::eval(
|
||||||
world,
|
world,
|
||||||
route.track(),
|
route.track(),
|
||||||
TrackedMut::reborrow_mut(&mut tracer),
|
TrackedMut::reborrow_mut(&mut tracer),
|
||||||
&world.main(),
|
&world.main(),
|
||||||
)?;
|
);
|
||||||
|
|
||||||
// Typeset it.
|
// Try to typeset it.
|
||||||
model::typeset(world, tracer, &module.content())
|
let res = module.and_then(|module| model::typeset(world, tracer, &module.content()));
|
||||||
|
|
||||||
|
// Deduplicate errors.
|
||||||
|
res.map_err(|err| {
|
||||||
|
let mut unique = HashSet::new();
|
||||||
|
err.into_iter()
|
||||||
|
.filter(|diagnostic| {
|
||||||
|
let hash = util::hash128(&(&diagnostic.span, &diagnostic.message));
|
||||||
|
unique.insert(hash)
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The environment in which typesetting occurs.
|
/// The environment in which typesetting occurs.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user