Commit graph

3651 commits

Author SHA1 Message Date
ding-young
b8a5b211ef impl rewrite_result for ChainItem 2024-08-03 04:43:03 -06:00
ding-young
3d468e2d92 update combine_strs_with_missing_comments 2024-08-03 04:43:03 -06:00
ding-young
5325b9e98c modify rewrite_literal 2024-08-03 04:43:03 -06:00
Caleb Cartwright
cf352a766f chore: apply review suggestions 2024-07-28 19:37:36 -05:00
Caleb Cartwright
d66ab31b53 tests: add new load_config tests 2024-07-28 19:37:36 -05:00
Caleb Cartwright
d65daa9c4f refactor: rebase with set_cli() behavior 2024-07-28 19:37:36 -05:00
Caleb Cartwright
b6c89fc657 feat: add --style-edition option to rustfmt binary 2024-07-28 19:37:36 -05:00
Caleb Cartwright
7c41e2bfba refactor: switch from 'version' to 'style_edition'
Updates the relevant formatting logic to utilize the
new 'style_edition' option directly instead of the now
deprecated 'version' option. 'version' has only been
soft deprecated and has auto mapping in place so there
should be zero formatting impact to current 'version' users.
2024-07-28 19:37:36 -05:00
Caleb Cartwright
c2c9be5b2d feat: implement Style Edition support
Adds the 'style_edition' configuration option along with
documentation, 'version' option deprecation, and mapping
of 'edition' and 'version' values for backwards compatibility
and adherence to the style evolution RFC
2024-07-28 19:37:36 -05:00
Caleb Cartwright
d8ae6a99e6 tests: add a few for style edition config defaults 2024-07-27 17:35:10 -05:00
Caleb Cartwright
a23d3ccb84 refactor: track configs set from cli flags 2024-07-27 17:01:11 -05:00
ding-young
e21c1e220b refactor rewrite_array, pair, tuple, call 2024-07-26 03:53:21 -06:00
ding-young
1313d61842 modfiy ListItem to hold RewriteResult as the item field 2024-07-26 03:00:49 -06:00
ding-young
6ccf539b19 modify trait bound of itemize_list 2024-07-26 03:00:49 -06:00
ding-young
ea02de27ff refactor rewrite_match and impl rewrite_result for ArmWrapper 2024-07-17 20:51:42 -06:00
ding-young
babc2f9b8a modify rewrite_struct_lit, rewrite_struct_pat
- refactor rewrite_*** functions that call rewrite_path to return RewriteResult
- modify rewrite_aligned_item method of AlignedItem
2024-07-17 18:40:45 -06:00
ding-young
3cbc91e9d6 modify rewrite_path and impl rewrite_result for related AST nodes 2024-07-17 18:40:45 -06:00
Yacin Tmimi
7cdb426c05 Implement StyleEditionDefault for each config option
Makes internal changes to define each configuration in terms of the
`StyleEditionDefault` trait, and hard codes `StyleEdition::Edition2015`
anywhere the new `style_edition` is needed.

**Note** users are still unable to configure `style edition`.
2024-07-15 15:41:31 -06:00
ding-young
071ca7dc45 refactor rewrite_closure 2024-07-15 14:34:56 -06:00
ding-young
bb56224d2a refactor rewrite_block 2024-07-15 14:34:56 -06:00
ding-young
eed7e237bc rewrite_result for GenericBounds, GenericParam, SegmentParam 2024-07-06 09:17:32 -06:00
ding-young
f62d730e54 impl rewrite_result for AssocItemConstraintKind, GenericArg, GenericBound, Ty 2024-07-06 09:17:32 -06:00
ding-young
21afdb81f8 add Ext trait for converting Option->RewriteResult 2024-07-03 19:10:20 -06:00
ding-young
905ca5483b add rewrite_result method to Rewrite trait
impl rewrite_result for ast::Local, ast::FieldDef, ast::Param, ast::FnRetTy
2024-07-03 19:10:20 -06:00
hattizai
533b760f8d remove duplicate word 2024-07-02 07:52:22 -06:00
Michael Goulet
c5284965bd Remove stray println from rustfmt 2024-06-25 18:05:52 -04:00
Michael Goulet
b5fa338f23 Merge remote-tracking branch 'origin/master' into sync-from-rust-2024-06-24 2024-06-24 23:02:45 -04:00
Matthias Krüger
514fe39e25 Rollup merge of #126888 - compiler-errors:oops-debug-printing, r=dtolnay
Remove stray println from rustfmt's `rewrite_static`

r? `@calebcartwright` `@ytmimi` -- though anyone should probably r+ this so it gets into nightly sooner than later, since it's obviously wrong.

This can just be fixed in-tree, since I don't think we want to wait until the next sync to fix this.

Fix https://github.com/rust-lang/rustfmt/issues/6210
Fix https://github.com/rust-lang/rust/issues/126887
2024-06-24 06:27:17 +02:00
Matthias Krüger
bd0a886b7e Rollup merge of #126754 - compiler-errors:use-rustfmt, r=calebcartwright
Implement `use<>` formatting in rustfmt

This PR implements formatting for precise-capturing `use<>` syntax as proposed in https://github.com/rust-lang/rust/pull/126753.

The syntax is implemented as-if the `use<>` bound were a trait bound but with the `use` keyword as its path segment identifier.

I opted to develop this in the rust-lang/rust tree since I'm not certain when the next rustfmt subtree sync is going to be, and I'd rather not block landing nightly support for `use<>` on something I have no control over. If ``@rust-lang/rustfmt`` would rather I move this PR over to that repository, then I would at least like to know when the next rustfmt->rust subtree sync is going to be, since stabilizing `precise_capturing` without formatting will be disruptive.

This implementation is otherwise rather straightforward.

Tracking:

- https://github.com/rust-lang/rust/issues/123432
2024-06-24 06:27:14 +02:00
Michael Goulet
22aac496cc Remove stray println from rustfmt 2024-06-23 22:27:41 -04:00
Matthias Krüger
8f8a463cbd Rollup merge of #126851 - nnethercote:NtExprKind-NtPatKind, r=compiler-errors
Rework pattern and expression nonterminal kinds.

Some tweaks to `NonterminalKind` that will assist with #124141. Details in the individual commits.

r? compiler-errors
cc ```@eholk```
2024-06-23 22:39:01 +02:00
Michael Goulet
10277c97c2 Implement use<> formatting in rustfmt 2024-06-23 10:57:10 -04:00
Nicholas Nethercote
5faf95c1c1 Rework pattern and expression nonterminal kinds.
Merge `PatParam`/`PatWithOr`, and `Expr`/`Expr2021`, for a few reasons.

- It's conceptually nice, because the two pattern kinds and the two
  expression kinds are very similar.

- With expressions in particular, there are several places where both
  expression kinds get the same treatment.

- It removes one unreachable match arm.

- Most importantly, for #124141 I will need to introduce a new type
  `MetaVarKind` that is very similar to `NonterminalKind`, but records a
  couple of extra fields for expression metavars. It's nicer to have a
  single `MetaVarKind::Expr` expression variant to hold those extra
  fields instead of duplicating them across two variants
  `MetaVarKind::{Expr,Expr2021}`. And then it makes sense for patterns
  to be treated the same way, and for `NonterminalKind` to also be
  treated the same way.

I also clarified the comments, because I have long found them a little
hard to understand.
2024-06-23 15:57:24 +10:00
Caleb Cartwright
081ae53225 fix bad merge conflict resolution 2024-06-22 16:21:14 -05:00
Michael Goulet
8b36bc00a8 Fix rustfmt 2024-06-22 15:41:51 -05:00
Caleb Cartwright
ebce054347 Merge commit 'e4944185ae' into sync-from-rustfmt-24-06 2024-06-22 15:33:45 -05:00
Yacin Tmimi
30cdc2b3e9 format safety keywords on static items
This includes both `ast::StaticItem` and `ast::StaticForeignItem`.
`safety` was added to both `ast::StaticItem` and `ast::SaticForeignItem`
in https://github.com/rust-lang/rust/pull/124482.
2024-06-21 09:11:07 -05:00
Oli Scherer
0c5a75a61b Use a dedicated type instead of a reference for the diagnostic context
This paves the way for tracking more state (e.g. error tainting) in the diagnostic context handle
2024-06-18 15:42:11 +00:00
Michael Goulet
1d1989fdab Fix rustfmt 2024-06-17 22:35:25 -04:00
Yacin Tmimi
30eb54b5ca Add config_proc_macro to system tests
Also formats unforamatted files in the crate.
2024-06-13 00:43:21 -04:00
Yacin Tmimi
8abbcad938 format #![feature(unsafe_attributes)]
Our diff-check job was failing in part due to removing `unsafe` from any
`#[unsafe(attributes)]`. To prevent that I added a quick implementation
for this.
2024-06-12 23:53:53 -04:00
Yacin Tmimi
8e80f8aa3a don't apply formatting to builtin type ascription syntax
The syntax changed from `expr: ty` -> `builtin # type_ascribe(expr, ty)`
For now, rustfmt will just emit the contents of the span.
2024-06-12 22:40:15 -04:00
Yacin Tmimi
2db10950fe allow dead code for StyleEditionDefault
We need to allow `StyleEditionDefault` because it will be used to
implement `style_edition`, but that work is currently ongoing.
2024-06-12 22:39:13 -04:00
Yacin Tmimi
76cd550c54 Merge remote-tracking branch 'upstream/master' into subtree-push-nightly-2024-06-13 2024-06-12 22:37:39 -04:00
bors
c1ea87876f Auto merge of #124482 - spastorino:unsafe-extern-blocks, r=oli-obk
Unsafe extern blocks

This implements RFC 3484.

Tracking issue #123743 and RFC https://github.com/rust-lang/rfcs/pull/3484

This is better reviewed commit by commit.
2024-06-06 08:14:58 +00:00
Nicholas Nethercote
ecb2dd151c rustfmt: Remove an unnecessary catch_unwind use.
The `Input::File` and `Input::Text` cases should be very similar.
However, currently the `Input::File` case uses `catch_unwind` because,
until recently (#125815) there was a fallible version of
`new_parser_from_source_str` but only an infallible version of
`new_parser_from_file`. This difference wasn't fundamental, just an
overlooked gap in the API of `rustc_parse`.

Both of those operations are now fallible, so the `Input::File` and
`Input::Text` cases can made more similar, with no need for
`catch_unwind`. This also lets us simplify an `Option<Vec<Diag>>` to
`Vec<Diag>`.
2024-06-05 10:38:03 +10:00
Nicholas Nethercote
5962aa96f1 Make top-level rustc_parse functions fallible.
Currently we have an awkward mix of fallible and infallible functions:
```
       new_parser_from_source_str
 maybe_new_parser_from_source_str
       new_parser_from_file
(maybe_new_parser_from_file)        // missing
      (new_parser_from_source_file) // missing
 maybe_new_parser_from_source_file
       source_str_to_stream
 maybe_source_file_to_stream
```
We could add the two missing functions, but instead this commit removes
of all the infallible ones and renames the fallible ones leaving us with
these which are all fallible:
```
new_parser_from_source_str
new_parser_from_file
new_parser_from_source_file
source_str_to_stream
source_file_to_stream
```
This requires making `unwrap_or_emit_fatal` public so callers of
formerly infallible functions can still work.

This does make some of the call sites slightly more verbose, but I think
it's worth it for the simpler API. Also, there are two `catch_unwind`
calls and one `catch_fatal_errors` call in this diff that become
removable thanks this change. (I will do that in a follow-up PR.)
2024-06-05 10:38:03 +10:00
Nicholas Nethercote
eeefcd66cb Remove stream_to_parser.
It's a zero-value wrapper of `Parser::new`.
2024-06-05 10:37:59 +10:00
Santiago Pastorino
6478d9e59c Handle safety keyword for extern block inner items 2024-06-04 14:19:42 -03:00
Amr Hesham
c97996fab6 collapse nested if detected by clippy 2024-06-03 21:08:58 -06:00