|
2 | 2 |
|
3 | 3 | ## [Unreleased]
|
4 | 4 |
|
| 5 | +### Fixed |
| 6 | + |
| 7 | +- Sometimes when `format_code_in_doc_comments=true` was set some line comments were converted to block comments [#5533](https://github.com/rust-lang/rustfmt/issues/5533) |
| 8 | +- rustfmt will no longer remove the braces in match arms when the block has a labeled [#5676](https://github.com/rust-lang/rustfmt/issues/5676) |
| 9 | + ```rust |
| 10 | + fn main() { |
| 11 | + match true { |
| 12 | + true => 'a: { |
| 13 | + break 'a |
| 14 | + } |
| 15 | + _ => (), |
| 16 | + } |
| 17 | + } |
| 18 | + ``` |
| 19 | +- Calling methods on float literals ending in `.` will now be wrappen in parenthesis. e.g. `0. .to_string()` will be formatted as `(0.).to_string()` [#5791](https://github.com/rust-lang/rustfmt/issues/5791) |
| 20 | +- Prevent ICE when formatting empty `macro_rules!` branch [#5730](https://github.com/rust-lang/rustfmt/issues/5730) |
| 21 | + ```rust |
| 22 | + macro_rules! statement { |
| 23 | + () => {;}; |
| 24 | + } |
| 25 | + ``` |
| 26 | +- Prevent ICE when formatting `vec!{}` [#5735](https://github.com/rust-lang/rustfmt/issues/5735) |
| 27 | +- Prevent internal trailing whitespace error when formatting an empty `macro_rules!` defintion e.g. `macro_rules! foo {}` [#5882](https://github.com/rust-lang/rustfmt/issues/5882) |
| 28 | +- When formatting doc comments lines that start with `.` or `)` won't be treated as ordered markdown lists if `.` or `)` aren't follwed by a number [#5835](https://github.com/rust-lang/rustfmt/pull/5835) |
| 29 | +- Add parenthesis around closures when they're used as method receives, don't have a block body, and end with `.` [#4808](https://github.com/rust-lang/rustfmt/issues/4808) |
| 30 | + ```rust |
| 31 | + fn main() { |
| 32 | + || (10.).method(); |
| 33 | + (|| ..).method(); |
| 34 | + (|| 1..).method(); |
| 35 | + } |
| 36 | + ``` |
| 37 | +- Prevent removing `for<T>` when using the [`#![feature(non_lifetime_binders)]`](https://github.com/rust-lang/rust/issues/108185) [#5721](https://github.com/rust-lang/rustfmt/issues/5721) |
| 38 | + ```rust |
| 39 | + #![feature(non_lifetime_binders)] |
| 40 | + #![allow(incomplete_features)] |
| 41 | + |
| 42 | + trait Other<U: ?Sized> {} |
| 43 | + |
| 44 | + trait Trait<U> |
| 45 | + where |
| 46 | + for<T> U: Other<T> {} |
| 47 | + ``` |
| 48 | +- Fix various issues with comments in imports [#5852](https://github.com/rust-lang/rustfmt/issues/5852) [#4708](https://github.com/rust-lang/rustfmt/issues/4708) [#3984](https://github.com/rust-lang/rustfmt/issues/3984) |
| 49 | +- When setting `version = Two` newlines between where clause bounds will be removed [#5655](https://github.com/rust-lang/rustfmt/issues/5655) |
| 50 | + ```rust |
| 51 | + fn foo<T>(_: T) |
| 52 | + where |
| 53 | + T: std::fmt::Debug, |
| 54 | + T: std::fmt::Display, |
| 55 | + { |
| 56 | + } |
| 57 | + ``` |
| 58 | +- Improve formatting of `let-else` statements that have leading attributes When setting `version = Two` [#5901](https://github.com/rust-lang/rustfmt/issues/5901) |
| 59 | +- Prevent comment duplication in expressions wrapped in parenthesis. [#5871](https://github.com/rust-lang/rustfmt/issues/5871) |
| 60 | + |
| 61 | + |
| 62 | +### Changed |
| 63 | + |
| 64 | +- rustfmt no longer removes explicit `Rust` ABIs. e.g `extern "Rust" fn im_a_rust_fn() {}` [#5701](https://github.com/rust-lang/rustfmt/issues/5701) |
| 65 | +- Setting `trailing_semicolon = false` will only remove trailing `;` on the last expression in a block [#5797](https://github.com/rust-lang/rustfmt/issues/5797) |
| 66 | +- Update the format of `cargo help fmt` to be more consistent with other standard commands [#5908](https://github.com/rust-lang/rustfmt/pull/5908) |
| 67 | + |
| 68 | +### Added |
| 69 | + |
| 70 | +- Users can now set `skip_macro_invocations` in `rustfmt.toml` [#5816](https://github.com/rust-lang/rustfmt/issues/5816) |
| 71 | + |
| 72 | +### Misc |
| 73 | + |
| 74 | +- Support the experimental `dyn*` syntax, enabled by `#![feature(dyn_star)]` [#5542](https://github.com/rust-lang/rustfmt/issues/5542) |
| 75 | +- Replace `unicode_categories` dependency with `unicode-properties` [#5864](https://github.com/rust-lang/rustfmt/pull/5864) |
| 76 | + |
| 77 | +## [1.6.0] 2023-07-02 |
| 78 | + |
| 79 | +### Added |
| 80 | + |
| 81 | +- Support for formatting let-else statements [#5690] |
| 82 | +- New config option, `single_line_let_else_max_width`, that allows users to configure the maximum length of single line `let-else` statements. `let-else` statements that otherwise meet the requirements to be formatted on a single line will have their divergent`else` block formatted over multiple lines if they exceed this length [#5684] |
| 83 | + |
| 84 | +[#5690]: https://github.com/rust-lang/rustfmt/pull/5690 |
| 85 | +[#5684]: https://github.com/rust-lang/rustfmt/issues/5684 |
| 86 | + |
| 87 | +## [1.5.3] 2023-06-20 |
| 88 | + |
| 89 | +### Fixed |
| 90 | + |
| 91 | +- When formatting doc comments with `wrap_comments = true` rustfmt will no longer wrap markdown tables [#4210](https://github.com/rust-lang/rustfmt/issues/4210) |
| 92 | +- Properly handle wrapping comments that include a numbered list in markdown [#5416](https://github.com/rust-lang/rustfmt/issues/5416) |
| 93 | +- Properly handle markdown sublists that utilize a `+` [#4041](https://github.com/rust-lang/rustfmt/issues/4041) |
| 94 | +- rustfmt will no longer use shorthand initialization when rewriting a tuple struct even when `use_field_init_shorthand = true` as this leads to code that could no longer compile. |
| 95 | + Take the following struct as an example `struct MyStruct(u64);`. rustfmt will no longer format `MyStruct { 0: 0 }` as `MyStruct { 0 }` [#5488](https://github.com/rust-lang/rustfmt/issues/5488) |
| 96 | +- rustfmt no longer panics when formatting an empty code block in a doc comment with `format_code_in_doc_comments = true` [#5234](https://github.com/rust-lang/rustfmt/issues/5234). For example: |
| 97 | + ```rust |
| 98 | + /// ``` |
| 99 | + /// |
| 100 | + /// ``` |
| 101 | + fn main() {} |
| 102 | + ``` |
| 103 | +- rustfmt no longer incorrectly duplicates the where clause bounds when using const expression in where clause bounds with feature `#![feature(generic_const_exprs)]` [#5691](https://github.com/rust-lang/rustfmt/issues/5691). e.g.: |
| 104 | + ```rust |
| 105 | + struct S<const C: usize> |
| 106 | + where |
| 107 | + [(); { num_slots!(C) }]:, { |
| 108 | + // code ... |
| 109 | + } |
| 110 | + ``` |
| 111 | +- Prevent ICE when parsing invalid attributes in `cfg_if!` macros [#5728](https://github.com/rust-lang/rustfmt/issues/5728), [#5729](https://github.com/rust-lang/rustfmt/issues/5729) |
| 112 | +- rustfmt no longer loses comments placed between a doc comment and generic params [#5320](https://github.com/rust-lang/rustfmt/issues/5320) |
| 113 | +- Handle explicit discriminants in enums with comments present [#5686](https://github.com/rust-lang/rustfmt/issues/5686) |
| 114 | + |
| 115 | +### Changed |
| 116 | + |
| 117 | +- Users can now control whether rustc parser errors are displayed with color using rustfmt's `--color` option. To disable colored errors pass `--color=Never` to rustfmt [#5717](https://github.com/rust-lang/rustfmt/issues/5717) |
| 118 | + |
| 119 | + |
| 120 | +### Added |
| 121 | + |
| 122 | +- rustfmt now recognises `+` as the start of a markdown list, and won't incorrectly wrap sublists that begin with `+` when formatting doc comments with `wrap_comments = true` [#5560](https://github.com/rust-lang/rustfmt/pull/5560) |
| 123 | + |
| 124 | +### Misc |
| 125 | + |
| 126 | +- Update various dependencies, including `syn`, `cargo_metadata`, `env_logger`, and `toml` |
| 127 | + |
5 | 128 | ## [1.5.2] 2023-01-24
|
6 | 129 |
|
7 | 130 | ### Fixed
|
|
57 | 180 |
|
58 | 181 | - Simplify the rustfmt help text by eliding the full path to the rustfmt binary path from the usage string when running `rustfmt --help` [#5214](https://github.com/rust-lang/rustfmt/issues/5214)
|
59 | 182 |
|
| 183 | +- Bumped the version for serveral dependencies. Most notably `dirs` `v2.0.1` -> `v4.0.0`. This changed the global user config directory on macOS from `$HOME/Library/Preferences` to `$HOME/Library/Application Support` [#5237](https://github.com/rust-lang/rustfmt/pull/5237) |
| 184 | + |
60 | 185 | ### Fixed
|
61 | 186 |
|
62 | 187 | - Remove duplicate imports when `imports_granularity` is set to `Item` [#4725](https://github.com/rust-lang/rustfmt/issues/4725)
|
|
0 commit comments