diff options
Diffstat (limited to 'third_party/rust/codespan-reporting/CHANGELOG.md')
-rw-r--r-- | third_party/rust/codespan-reporting/CHANGELOG.md | 408 |
1 files changed, 408 insertions, 0 deletions
diff --git a/third_party/rust/codespan-reporting/CHANGELOG.md b/third_party/rust/codespan-reporting/CHANGELOG.md new file mode 100644 index 0000000000..68109e0665 --- /dev/null +++ b/third_party/rust/codespan-reporting/CHANGELOG.md @@ -0,0 +1,408 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.11.1] - 2021-01-18 + +### Added + +- Add `Chars::{box_drawing, ascii}` functions, the latter supporting a rustc-style of + output that only uses ASCII characters (not above U+007F) for use cases that do not allow + for box drawing characters, e.g. terminals that do not support them. + +### Changed + +- `Diagnostic::with_labels` and `Diagnostic::with_notes` now append additional + labels rather tan overwriting them, meaning that the documentation and behaviour match + more closely. The behaviour will only differ if you call the same builder methods + multiple times. If you call every builder method once only, nothing should change. +- `config::Chars::snippet_start` is now a String instead of a single `char`. + +## [0.11.0] - 2020-11-30 + +There is now a [code of conduct](https://github.com/brendanzab/codespan/blob/master/CODE_OF_CONDUCT.md) +and a [contributing guide](https://github.com/brendanzab/codespan/blob/master/CONTRIBUTING.md). + +Some versions were skipped to sync up with the `codespan-lsp` crate. The release +process has been changed so this should not happen again. + +### Added + +- If a label spans over multiple lines, not all lines are rendered. + The number of lines rendered at beginning and end is configurable separately. +- There is now a custom error type. +- There now is a medium rendering mode that is like the short rendering mode + but also shows notes from the diagnostic. +- `PartialEq` and `Eq` implementations for the `diagnostic::{Diagnostic, Label, Severity}` types. + +### Changed + +- All errors now use the error type `codespan_reporting::file::Error`. + This type also replaces the custom error type for `codespan-lsp`. + +### Fixed + +- Empty error codes are not rendered. +- The locus ("location of the diagnostic") is now computed so it is always at the first + primary label, or at the first secondary label if no primary labels are available. +- All `unwrap`s outside of tests and examples have been removed. +- Some internal improvements, including various code style improvements by using Clippy. +- Improved documentation, also mentioning how the ordering of labels is handled. + +## [0.9.5] - 2020-06-24 + +### Changed + +- Sections of source code that are marked with primary labels are now rendered + using the primary highlight color. +- Tab stops are now rendered properly. + + We used to just render `\t` characters in source snippets with the same + number of spaces. + + <details> + <summary>Example</summary> + + For example, when rendering with a tab width of `3` we + would print: + + ```text + warning: tab test + ┌─ tab_columns:1:2 + │ + 1 │ hello + │ ^^^^^ + 2 │ ∙ hello + │ ^^^^^ + 3 │ ∙∙ hello + │ ^^^^^ + 4 │ ∙∙∙ hello + │ ^^^^^ + 5 │ ∙∙∙∙ hello + │ ^^^^^ + 6 │ ∙∙∙∙∙ hello + │ ^^^^^ + 7 │ ∙∙∙∙∙∙ hello + │ ^^^^^ + ``` + + Now we properly take into account the column of the tab character: + + ```text + warning: tab test + ┌─ tab_columns:1:2 + │ + 1 │ hello + │ ^^^^^ + 2 │ ∙ hello + │ ^^^^^ + 3 │ ∙∙ hello + │ ^^^^^ + 4 │ ∙∙∙ hello + │ ^^^^^ + 5 │ ∙∙∙∙ hello + │ ^^^^^ + 6 │ ∙∙∙∙∙ hello + │ ^^^^^ + 7 │ ∙∙∙∙∙∙ hello + │ ^^^^^ + ``` + + </details> + +## [0.9.4] - 2020-05-18 + +### Changed + +- We have made the caret rendering easier to read when there are multiple + labels on the same line. We also avoid printing trailing borders on the + final source source snippet if no notes are present. + + <details> + <summary>Example</summary> + + Instead of this: + + ```text + ┌─ 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 + │ + ``` + + …we now render the following: + + ```text + ┌─ one_line.rs:3:5 + │ + 3 │ v.push(v.pop().unwrap()); + │ - ---- ^ second mutable borrow occurs here + │ │ │ + │ │ first mutable borrow occurs here + │ first borrow later used by call + ``` + + </details> + +### Fixed + +- Diagnostic rendering no longer panics if label ranges are between UTF-8 + character boundaries. + +## [0.9.3] - 2020-04-29 + +### Changed + +- Some panics were fixed when invalid unicode boundaries are supplied. +- Labels that marked the same span were originally rendered in reverse order. + This was a mistake! We've now fixed this. + + <details> + <summary>Example</summary> + + For example, this diagnostic: + + ```text + ┌─ same_range:1:7 + │ + 1 │ ::S { } + │ - Expected '(' + │ ^ Unexpected '{' + │ + ``` + + …will now be rendered as: + + ```text + ┌─ same_range:1:7 + │ + 1 │ ::S { } + │ ^ Unexpected '{' + │ - Expected '(' + │ + ``` + + </details> + +- We've reduced the prominence of the 'locus' on source snippets by + simplifying the border and reducing the spacing around it. This is to help + focus attention on the underlined source snippet and error messages, rather + than the location, which should be a secondary focus. + + <details> + <summary>Example</summary> + + For example we originally rendered this: + + ```text + error: unknown builtin: `NATRAL` + + ┌── Data/Nat.fun:7:13 ─── + │ + 7 │ {-# BUILTIN NATRAL Nat #-} + │ ^^^^^^ unknown builtin + │ + = there is a builtin with a similar name: `NATURAL` + + ``` + + …and now we render this: + + ```text + error: unknown builtin: `NATRAL` + ┌─ Data/Nat.fun:7:13 + │ + 7 │ {-# BUILTIN NATRAL Nat #-} + │ ^^^^^^ unknown builtin + │ + = there is a builtin with a similar name: `NATURAL` + + ``` + + </details> + +## [0.9.2] - 2020-03-29 + +### Changed + +- Render overlapping multiline marks on the same lines of source code. + + <details> + <summary>Example</summary> + + For example: + + ```text + 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: + + ```text + 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` + ``` + + </details> + +## [0.9.1] - 2020-03-23 + +### Added + +- `codespan_reporting::diagnostic::Diagnostic` now implements `Debug`. + +### Changed + +- Single-line labels are now rendered together, under the same source line. + + <details> + <summary>Example</summary> + + For example: + + ```text + ┌── 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: + + ```text + ┌── 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 + │ + ``` + + </details> + +## [0.9.0] - 2020-03-11 + +### Added + +- The `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. + +### Changed + +- The `codespan_reporting::diagnostic` module has been greatly revamped, + making the builder API format more nicely with rustfmt, and allowing for + multiple primary labels. +- The output of `codespan_reporting::term::emit` was improved, + with the following changes: + - labels on consecutive lines no longer render breaks between them + - source lines are rendered when there is only one line between labels + - the inner gutter of code snippets is now aligned consistently + - the outer gutter of consecutive code snippets are now aligned consistently +- `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. +- The field names in `codespan_reporting::term::Chars` were tweaked for + consistency. + +### Removed + +- `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`. + +## [0.8.0] - 2020-02-24 +## [0.7.0] - 2020-01-06 +## [0.6.0] - 2019-12-18 +## [0.5.0] - 2019-10-02 +## [0.4.1] - 2019-08-25 +## [0.4.0] - 2019-08-22 +## [0.3.0] - 2019-05-01 +## [0.2.1] - 2019-02-26 +## [0.2.0] - 2018-10-11 + +[Unreleased]: https://github.com/brendanzab/codespan/compare/v0.11.1...HEAD +[0.11.1]: https://github.com/brendanzab/codespan/compare/v0.11.0..v0.11.1 +[0.11.0]: https://github.com/brendanzab/codespan/compare/v0.9.5...v0.11.0 +[0.9.5]: https://github.com/brendanzab/codespan/compare/v0.9.4...v0.9.5 +[0.9.4]: https://github.com/brendanzab/codespan/compare/v0.9.3...v0.9.4 +[0.9.3]: https://github.com/brendanzab/codespan/compare/v0.9.2...v0.9.3 +[0.9.2]: https://github.com/brendanzab/codespan/compare/v0.9.1...v0.9.2 +[0.9.1]: https://github.com/brendanzab/codespan/compare/v0.9.0...v0.9.1 +[0.9.0]: https://github.com/brendanzab/codespan/compare/v0.8.0...v0.9.0 +[0.8.0]: https://github.com/brendanzab/codespan/compare/v0.7.0...v0.8.0 +[0.7.0]: https://github.com/brendanzab/codespan/compare/v0.6.0...v0.7.0 +[0.6.0]: https://github.com/brendanzab/codespan/compare/v0.5.0...v0.6.0 +[0.5.0]: https://github.com/brendanzab/codespan/compare/v0.4.1...v0.5.0 +[0.4.1]: https://github.com/brendanzab/codespan/compare/v0.4.0...v0.4.1 +[0.4.0]: https://github.com/brendanzab/codespan/compare/v0.3.0...v0.4.0 +[0.3.0]: https://github.com/brendanzab/codespan/compare/v0.2.1...v0.3.0 +[0.2.1]: https://github.com/brendanzab/codespan/compare/v0.2.0...v0.2.1 +[0.2.0]: https://github.com/brendanzab/codespan/releases/tag/v0.2.0 |