summaryrefslogtreecommitdiffstats
path: root/third_party/rust/codespan-reporting/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/codespan-reporting/CHANGELOG.md')
-rw-r--r--third_party/rust/codespan-reporting/CHANGELOG.md408
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