All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Render overlapping multiline marks on the same lines of source code.
For example:
error[E0308]: match arms have incompatible types ┌── codespan/src/file.rs:1:9 ─── │ 1 │ ╭ match line_index.compare(self.last_line_index()) { 2 │ │ Ordering::Less => Ok(self.line_starts()[line_index.to_usize()]), 3 │ │ Ordering::Equal => Ok(self.source_span().end()), 4 │ │ Ordering::Greater => LineIndexOutOfBoundsError { 5 │ │ given: line_index, 6 │ │ max: self.last_line_index(), 7 │ │ }, 8 │ │ } │ ╰─────────' `match` arms have incompatible types · 2 │ Ordering::Less => Ok(self.line_starts()[line_index.to_usize()]), │ --------------------------------------------- this is found to be of type `Result<ByteIndex, LineIndexOutOfBoundsError>` 3 │ Ordering::Equal => Ok(self.source_span().end()), │ ---------------------------- this is found to be of type `Result<ByteIndex, LineIndexOutOfBoundsError>` 4 │ Ordering::Greater => LineIndexOutOfBoundsError { │ ╭──────────────────────────────────^ 5 │ │ given: line_index, 6 │ │ max: self.last_line_index(), 7 │ │ }, │ ╰─────────────^ expected enum `Result`, found struct `LineIndexOutOfBoundsError` │ = expected type `Result<ByteIndex, LineIndexOutOfBoundsError>` found type `LineIndexOutOfBoundsError`
…is now rendered as:
error[E0308]: match arms have incompatible types ┌── codespan/src/file.rs:1:9 ─── │ 1 │ ╭ match line_index.compare(self.last_line_index()) { 2 │ │ Ordering::Less => Ok(self.line_starts()[line_index.to_usize()]), │ │ --------------------------------------------- this is found to be of type `Result<ByteIndex, LineIndexOutOfBoundsError>` 3 │ │ Ordering::Equal => Ok(self.source_span().end()), │ │ ---------------------------- this is found to be of type `Result<ByteIndex, LineIndexOutOfBoundsError>` 4 │ │ Ordering::Greater => LineIndexOutOfBoundsError { │ ╭─│──────────────────────────────────^ 5 │ │ │ given: line_index, 6 │ │ │ max: self.last_line_index(), 7 │ │ │ }, │ ╰─│─────────────^ expected enum `Result`, found struct `LineIndexOutOfBoundsError` 8 │ │ } │ ╰─────────' `match` arms have incompatible types │ = expected type `Result<ByteIndex, LineIndexOutOfBoundsError>` found type `LineIndexOutOfBoundsError`
codespan_reporting::diagnostic::Diagnostic
now implements Debug
.Single-line labels are now rendered together, under the same source line.
For example:
┌── one_line.rs:3:5 ─── │ 3 │ v.push(v.pop().unwrap()); │ - first borrow later used by call · 3 │ v.push(v.pop().unwrap()); │ ---- first mutable borrow occurs here · 3 │ v.push(v.pop().unwrap()); │ ^ second mutable borrow occurs here │
…is now rendered as:
┌── one_line.rs:3:5 ─── │ 3 │ v.push(v.pop().unwrap()); │ - first borrow later used by call │ ---- first mutable borrow occurs here │ ^ second mutable borrow occurs here │
codespan_reporting::files
module was added as a way to decouple codespan_reporting
from codespan
.codespan_reporting::files::Files
allows users to implement custom file databases that work with codespan_reporting
. This should make it easier to integrate with libraries like Salsa, and also makes it less invasive to use codespan_reporting
on existing projects.codespan_reporting::files::SimpleFile
is a simple implementation of codespan_reporting::files::Files
where only a single file is needed.codespan_reporting::files::SimpleFiles
is a simple implementation of codespan_reporting::files::Files
where multiple files are needed.codespan_reporting::diagnostic
module has been greatly revamped, making the builder API format more nicely with rustfmt, and allowing for multiple primary labels.codespan_reporting::term::emit
was improved, with the following changes:codespan_reporting::term::emit
now takes writers as a trait object (rather than using static dispatch) in order to reduce coda bloat and improve compile times.codespan_reporting::term::Chars
were tweaked for consistency.codespan_reporting
no longer depends on codespan
. Note that codespan
can still be used with codespan_reporting
, as codespan::Files
now implements codespan_reporting::files::Files
.