Wim Looman
cdd0b56071
Test that both table headers and values are not wrapped
2023-01-29 16:47:06 -06:00
Ayaz Hafiz
846662cdb3
Don't wrap comments that are part of a table
...
Closes #4210
2023-01-29 16:47:06 -06:00
David Bar-On
b08130c590
Fix #5234 - handling of empty code block ( #5601 )
2023-01-29 12:55:14 -06:00
amab8901
bcfc57ec8a
added tests ( #5619 )
2023-01-28 15:18:52 -06:00
Caleb Cartwright
5139b14620
fix: version gate changes for multiline single generic bound
2023-01-24 11:38:44 -06:00
Caleb Cartwright
e7d87ad61d
Merge remote-tracking branch 'upstream/master' into subtree-sync-2023-01-24
2023-01-23 21:19:31 -06:00
Caleb Cartwright
aae222c974
fix: correct span for structs with const generics
2023-01-23 12:55:02 -05:00
Albert Larsan
8c8aa3873f
Change src/test
to tests
in source files, fix tidy and tests
2023-01-11 09:32:13 +00:00
Esteban Küber
664c60a18e
Detect closures assigned to binding in block
...
Fix #58497 .
2023-01-05 21:29:36 +00:00
Jack Huey
748b031056
Stabilize GATs
2022-08-30 23:06:24 -04:00
Joshua Nelson
7852b8808b
Stabilize #![feature(label_break_value)]
...
# Stabilization proposal
The feature was implemented in https://github.com/rust-lang/rust/pull/50045 by est31 and has been in nightly since 2018-05-16 (over 4 years now).
There are [no open issues][issue-label] other than the tracking issue. There is a strong consensus that `break` is the right keyword and we should not use `return`.
There have been several concerns raised about this feature on the tracking issue (other than the one about tests, which has been fixed, and an interaction with try blocks, which has been fixed).
1. nrc's original comment about cost-benefit analysis: https://github.com/rust-lang/rust/issues/48594#issuecomment-422235234
2. joshtriplett's comments about seeing use cases: https://github.com/rust-lang/rust/issues/48594#issuecomment-422281176
3. withoutboats's comments that Rust does not need more control flow constructs: https://github.com/rust-lang/rust/issues/48594#issuecomment-450050630
Many different examples of code that's simpler using this feature have been provided:
- A lexer by rpjohnst which must repeat code without label-break-value: https://github.com/rust-lang/rust/issues/48594#issuecomment-422502014
- A snippet by SergioBenitez which avoids using a new function and adding several new return points to a function: https://github.com/rust-lang/rust/issues/48594#issuecomment-427628251 . This particular case would also work if `try` blocks were stabilized (at the cost of making the code harder to optimize).
- Several examples by JohnBSmith: https://github.com/rust-lang/rust/issues/48594#issuecomment-434651395
- Several examples by Centril: https://github.com/rust-lang/rust/issues/48594#issuecomment-440154733
- An example by petrochenkov where this is used in the compiler itself to avoid duplicating error checking code: https://github.com/rust-lang/rust/issues/48594#issuecomment-443557569
- Amanieu recently provided another example related to complex conditions, where try blocks would not have helped: https://github.com/rust-lang/rust/issues/48594#issuecomment-1184213006
Additionally, petrochenkov notes that this is strictly more powerful than labelled loops due to macros which accidentally exit a loop instead of being consumed by the macro matchers: https://github.com/rust-lang/rust/issues/48594#issuecomment-450246249
nrc later resolved their concern, mostly because of the aforementioned macro problems.
joshtriplett suggested that macros could be able to generate IR directly
(https://github.com/rust-lang/rust/issues/48594#issuecomment-451685983 ) but there are no open RFCs,
and the design space seems rather speculative.
joshtriplett later resolved his concerns, due to a symmetry between this feature and existing labelled break: https://github.com/rust-lang/rust/issues/48594#issuecomment-632960804
withoutboats has regrettably left the language team.
joshtriplett later posted that the lang team would consider starting an FCP given a stabilization report: https://github.com/rust-lang/rust/issues/48594#issuecomment-1111269353
[issue-label]: https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aopen+label%3AF-label_break_value+
## Report
+ Feature gate:
- d695a497bb/src/test/ui/feature-gates/feature-gate-label_break_value.rs
+ Diagnostics:
- 6b2d3d5f3c/compiler/rustc_parse/src/parser/diagnostics.rs (L2629)
- f65bf0b2bb/compiler/rustc_resolve/src/diagnostics.rs (L749)
- f65bf0b2bb/compiler/rustc_resolve/src/diagnostics.rs (L1001)
- 111df9e6ed/compiler/rustc_passes/src/loops.rs (L254)
- d695a497bb/compiler/rustc_parse/src/parser/expr.rs (L2079)
- d695a497bb/compiler/rustc_parse/src/parser/expr.rs (L1569)
+ Tests:
- https://github.com/rust-lang/rust/blob/master/src/test/ui/label/label_break_value_continue.rs
- https://github.com/rust-lang/rust/blob/master/src/test/ui/label/label_break_value_unlabeled_break.rs
- https://github.com/rust-lang/rust/blob/master/src/test/ui/label/label_break_value_illegal_uses.rs
- https://github.com/rust-lang/rust/blob/master/src/test/ui/lint/unused_labels.rs
- https://github.com/rust-lang/rust/blob/master/src/test/ui/run-pass/for-loop-while/label_break_value.rs
## Interactions with other features
Labels follow the hygiene of local variables.
label-break-value is permitted within `try` blocks:
```rust
let _: Result<(), ()> = try {
'foo: {
Err(())?;
break 'foo;
}
};
```
label-break-value is disallowed within closures, generators, and async blocks:
```rust
'a: {
|| break 'a
//~^ ERROR use of unreachable label `'a`
//~| ERROR `break` inside of a closure
}
```
label-break-value is disallowed on [_BlockExpression_]; it can only occur as a [_LoopExpression_]:
```rust
fn labeled_match() {
match false 'b: { //~ ERROR block label not supported here
_ => {}
}
}
macro_rules! m {
($b:block) => {
'lab: $b; //~ ERROR cannot use a `block` macro fragment here
unsafe $b; //~ ERROR cannot use a `block` macro fragment here
|x: u8| -> () $b; //~ ERROR cannot use a `block` macro fragment here
}
}
fn foo() {
m!({});
}
```
[_BlockExpression_]: https://doc.rust-lang.org/nightly/reference/expressions/block-expr.html
[_LoopExpression_]: https://doc.rust-lang.org/nightly/reference/expressions/loop-expr.html
2022-08-23 21:14:12 -05:00
A-Walrus
38659ec6ad
Unicode comment align ( #5505 )
...
* Fix comment alignment with unicode
Also added tests for this behaviour
* Simplify tests
* Improve tests
2022-08-18 18:44:29 -05:00
David Bar-On
ea017d7f84
Backport PR #4730 ( #5390 )
...
* Backport PR #4730 that fix issue #4689
* Test files for each Verion One and Two
* Simplify per review comment - use defer and matches!
* Changes per reviewer comments for reducing indentations
2022-08-09 09:30:49 -04:00
Caleb Cartwright
a392dd10cd
Merge remote-tracking branch 'upstream/master' into subtree-sync-2022-08-06
2022-08-06 19:07:02 -05:00
alexey semenyuk
662702eb54
Fix typos ( #5486 )
...
* Fix typos
* Fix typos
2022-08-06 18:53:03 -05:00
Yacin Tmimi
a7801aac27
Add test for issue 3987
...
Closes 3987
It's unclear which commit resolved this issue, but it can no longer be
reproduced.
2022-07-28 19:13:10 -05:00
Martin Juarez
ed77962d24
Improvements: Adding tests for the issue-4643.
2022-07-26 13:06:10 -04:00
Yacin Tmimi
a451a39dec
Add test for issue 4350
...
Closes 4350
Its unclear which commit resolved this, but the original issue is no
longer reproducible.
2022-07-25 20:11:32 -05:00
Yacin Tmimi
c19b14539b
test for issue 3164
...
Closes 3164
Show that when `error_on_line_overflow=true` is set in the rustfmt.toml
that an error message is written to stderr.
2022-07-22 17:57:07 -05:00
Yacin Tmimi
4c78c738ba
Add tests for 3245 and 3561
...
Closes 3245
Closes 3561
These issues were originally linked in issue 3672 and as was mentioned
in PR 3706, it's unclear which commit resolved the issue but the issue
can no longer be reproduced.
2022-07-20 21:37:12 -05:00
Yacin Tmimi
f2c31ba04d
Add tests for issue 2534
...
Closes 2534
The behavior described in the original issue can no longer be
reproduced. The tests show that to be the case regardless of if
`format_macro_matchers` is `true` or `false`.
2022-07-19 17:07:01 -05:00
Yacin Tmimi
05332b8c50
Add test for issue 3033
...
Closes 3033
The issue is no longer reproducible.
2022-07-19 17:00:37 -05:00
Jorge Martin Juarez
a7bf009034
Fix/comments inside trait generics gets duplicated ( #5446 )
...
* Bugfix: Now slash/start comments aren't duplicated on trait parameters.
* Removing unnecesary comment.
* Improvements: Improving the BytePos offset.
* Improvements: Improving the description of the test cases.
2022-07-17 21:39:25 -04:00
Yacin Tmimi
0cb294f05c
Deprecate and Rename fn_args_layout
-> fn_params_layout
...
fn_args_layout is now deprecated.
This option was renamed to better communicate that it affects the layout
of parameters in function signatures and not the layout of arguments in
function calls.
Because the `fn_args_layout` is a stable option the renamed option is
also stable, however users who set `fn_args_layout` will get a warning
message letting them know that the option has been renamed.
2022-07-12 19:33:53 -05:00
Tom Milligan
c240f3a6b3
feat: add skip_macro_invocations option ( #5347 )
...
* feat: add skip_macro_names option
* [review] update configuration documentation
* [review] fix docstring
* [feat] implement wildcard macro invocation skip
* commit missed files
* [review] test override skip macro names
* [review] skip_macro_names -> skip_macro_invocations
* [review] expand doc configuration
* [review] add lots more tests
* [review] add use alias test examples
* [review] add link to standard macro behaviour
2022-07-12 19:31:19 -05:00
Maybe Waffle
f026688c2a
Add rustfmt test for formatting for<>
before closures
2022-07-12 21:00:13 +04:00
Yacin Tmimi
2403f827bf
Add test case for issue 1306 which was resolved
...
Closes 1306
It's unclear when the issue was fixed, but it cannot be reproduced.
2022-07-09 19:59:09 -05:00
Yacin Tmimi
b3d4fb448c
Allow #[ignore]
tests to run in rustfmt's test suite
...
There are some tests in the rustfmt test suite that are ignored by
default. I believe these tests are ignored because they have caused
issues with the the `rust-lang/rust` test suite.
However, we recently experienced an issue (5395) that would have been
avoided had these tests been running.
With the introduction of the new `#[rustfmt_only_ci_test]` attribute
macro we can run these tests when the `RUSTFMT_CI` environment variable
is set, which will presumably only be set during rustfmts CI runs.
When the environment variable is not set the `#[rustfmt_only_ci_test]`
will be replaced with an `#[ignore]`.
2022-06-29 18:55:02 -05:00
Caleb Cartwright
ac595dd57a
Merge commit 'c4416f20dcaec5d93077f72470e83e150fb923b1' into sync-rustfmt
2022-06-22 22:14:32 -05:00
Yacin Tmimi
a187091568
Add idempotency test for issue 5399
2022-06-22 17:45:42 -05:00
Yacin Tmimi
0156575a32
Revert "Memoize format_expr"
...
Fixes 5399
Memoizing expressions lead to cases where rustfmt's stability guarantees
were violated.
This reverts commit a37d3ab0e1
.
2022-06-22 17:45:42 -05:00
sec65
33c60740d3
Add width for codeblocks in comments ( #5372 )
...
* add doc_comment_code_block_width configuration
* updated config docu
* Updated docu and changed tests to config folder
2022-06-16 22:15:16 -05:00
Yacin Tmimi
e44380b341
Version gate raw identifier use statement sorting
...
When useing `version=One` rustfmt will treat the leading `r#` as part of
the `UseSegment` used for sorting. When using `version=Two` rustfmt will
ignore the leading `r#` and only consider the name of the identifier
when sorting the `UseSegment`.
2022-06-15 20:06:04 -05:00
Yacin Tmimi
5ae94cc6b8
Backport 3795
...
fix sorting of use statements with raw identifiers
2022-06-15 20:06:04 -05:00
Caleb Cartwright
d03a547cad
Merge commit '7b73b60faca71d01d900e49831fcb84553e93019' into sync-rustfmt
2022-06-12 22:03:05 -05:00
David Bar-On
7d34cfaf2c
Dedup imports_granularity = "Item"
( #4737 )
...
* Fix for issue 4725 - dedup Item imports_granularity (2nd version)
* Use unique() instead of unique_by()
2022-06-11 19:57:47 -05:00
Caleb Cartwright
1ac2ac0db6
Merge remote-tracking branch 'upstream/master' into subtree-sync-2022-06-07
2022-06-07 22:06:28 -05:00
Caleb Cartwright
79515f17ed
feat: remove license_template_path config option
2022-05-30 08:56:09 -05:00
Caleb Cartwright
825561deb8
feat: remove report_fixme option
2022-05-30 08:56:09 -05:00
Caleb Cartwright
4c8db85939
feat: remove report_todo option
2022-05-30 08:56:09 -05:00
Jacob Pratt
241a6f6930
Remove crate
visibility modifier in libs, tests
2022-05-21 00:32:47 -04:00
ydah
86940d2652
Fix typo
...
This PR is fixes typo "avaiable" to "available".
2022-05-20 10:39:10 +09:00
David Lattimore
95837832f4
import_granularity: Don't normalize imports with comments
2022-05-18 21:08:30 -05:00
Yacin Tmimi
b08b2daeb6
Add test for issue 3937
...
Closes 3937
It's unclear which change fixed the `format_code_in_doc_comments=true`
issue brought up in this issue, however I'm unable to reproduce the
error on the current master.
The added test cases should serve to prevent a regression.
2022-05-17 17:17:07 -05:00
Pascal Seitz
c65ba14d69
Fixes #5260
...
Fixes #5260 by checking if it is part of a type '::'
2022-05-08 13:22:35 -05:00
Yacin Tmimi
3cc1f5ed5b
Add tests for issue 4573
...
It's unclear which PR resolved this issue, however the behavior of
adding inline comments to the next line can't be reproduced.
These test cases should serve to prevent a regression.
2022-05-08 12:55:43 -05:00
cuishuang
c03e1842f6
fix some typos
...
Signed-off-by: cuishuang <imcusg@gmail.com>
2022-05-07 11:10:59 -05:00
hkalbasi
a37d3ab0e1
Memoize format_expr
2022-04-17 09:32:43 -05:00
Tom Milligan
acdab00ecc
[review] check interaction with import grouping
2022-04-17 09:28:48 -05:00
Paul Gey
ba0351a146
Preserve attributes for imports_granularity=Item
...
Fixes #5030
2022-04-17 09:28:48 -05:00