---
title: T-style triage meeting 2024-08-21
tags: ["T-style", "triage-meeting", "minutes"]
date: 2024-08-21
discussion: https://rust-lang.zulipchat.com/#narrow/stream/346005-t-style/topic/meeting.202024-08-21
url: https://hackmd.io/MFflcwfMTb6vdq7zvLCvWA
---
# T-style meeting agenda
- Meeting date: 2024-08-21
## Attendance
- People: TC, CE, Josh, Caleb
## Meeting roles
- Facilitator: TC
- Minutes: TC
## Check-in
(Not minuted.)
## Scheduled design meetings
None.
Update these [here](https://github.com/orgs/rust-lang/projects/38/views/1).
## Proposed design meetings
None.
Update these [here](https://github.com/orgs/rust-lang/projects/38/views/1).
## Announcements or custom items
(Meeting attendees, feel free to add items here!)
## Rust 2024 edition review
Caleb: Two things still need to go in:
- Version sorting.
- `overflow_delimited_expr`
Otherwise the impl is complete. I'd recommend that people have a look at the version sorting PR and the code. Make sure the examples there align with your expectations.
## Nominated RFCs, PRs, and issues
### "Tracking Issue for Rust 2024: rustfmt enable `overflow_delimited_expr`" rust#123751
Caleb: Here's an example:
```diff=
- .emit_formatted_file(
- &mut writer,
- FormattedFile {
- filename: &FileName::Real(PathBuf::from("src/lib.rs")),
- original_text: "fn empty() {}\n",
- formatted_text: "fn empty() {}\r\n",
- },
- )
+ .emit_formatted_file(&mut writer, FormattedFile {
+ filename: &FileName::Real(PathBuf::from("src/lib.rs")),
+ original_text: "fn empty() {}\n",
+ formatted_text: "fn empty() {}\r\n",
+ })
```
```diff=
- context.report.append(
- context.psess.span_to_filename(span),
- vec![FormattingError::from_span(
- span,
- context.psess,
- ErrorKind::LostComment,
- )],
- );
+ context
+ .report
+ .append(context.psess.span_to_filename(span), vec![
+ FormattingError::from_span(span, context.psess, ErrorKind::LostComment),
+ ]);
}
```
```diff=
- assert_eq!(
- json,
- json! {[
- {"file": "src/lib.rs", "range": [1, 7]},
- {"file": "src/main.rs", "range": [1, 3]},
- {"file": "src/main.rs", "range": [5, 7]},
- ]}
- );
+ assert_eq!(json, json! {[
+ {"file": "src/lib.rs", "range": [1, 7]},
+ {"file": "src/main.rs", "range": [1, 3]},
+ {"file": "src/main.rs", "range": [5, 7]},
+ ]});
```
```diff=
- (
- FileName::Real(PathBuf::from("src/main.rs")),
- vec![Range::new(1, 3), Range::new(5, 7)],
- ),
- (
- FileName::Real(PathBuf::from("src/lib.rs")),
- vec![Range::new(1, 7)],
- ),
+ (FileName::Real(PathBuf::from("src/main.rs")), vec![
+ Range::new(1, 3),
+ Range::new(5, 7),
+ ]),
+ (FileName::Real(PathBuf::from("src/lib.rs")), vec![
+ Range::new(1, 7),
+ ]),
```
```diff=
- test_merge!(
- One,
- ["b", "a::ac::{aca, acb}", "a::{aa::*, ab}"],
- ["{a::{aa::*, ab, ac::{aca, acb}}, b}"]
- );
+ test_merge!(One, ["b", "a::ac::{aca, acb}", "a::{aa::*, ab}"], [
+ "{a::{aa::*, ab, ac::{aca, acb}}, b}"
+ ]);
```
```diff=
- test_merge!(
- Module,
- ["foo::{a::b, a::c, d::e, d::f}"],
- ["foo::a::{b, c}", "foo::d::{e, f}"]
- );
+ test_merge!(Module, ["foo::{a::b, a::c, d::e, d::f}"], [
+ "foo::a::{b, c}",
+ "foo::d::{e, f}"
+ ]);
```
```diff=
- return Some(vec![
- b[0].clone(),
- UseSegment {
- kind: UseSegmentKind::List(list),
- style_edition,
- },
- ]);
+ return Some(vec![b[0].clone(), UseSegment {
+ kind: UseSegmentKind::List(list),
+ style_edition,
+ }]);
```
TC: On the last two, where macros come into play, Common Lisp actually has a distinction for this, largely for indentation reasons:
```lisp
(defmacro foo (&rest foo)
...)
(defmacro foo (&body foo)
...)
```
```diff=
- assert_eq!(
- lines,
- ModifiedLines {
- chunks: vec![
- ModifiedChunk {
- line_number_orig: 1,
- lines_removed: 6,
- lines: vec!["fn some() {}".to_owned(), "fn main() {}".to_owned(),]
- },
- ModifiedChunk {
- line_number_orig: 25,
- lines_removed: 3,
- lines: vec![" struct Test {}".to_owned()]
- }
- ]
- }
- );
+ assert_eq!(lines, ModifiedLines {
+ chunks: vec![
+ ModifiedChunk {
+ line_number_orig: 1,
+ lines_removed: 6,
+ lines: vec!["fn some() {}".to_owned(), "fn main() {}".to_owned(),]
+ },
+ ModifiedChunk {
+ line_number_orig: 25,
+ lines_removed: 3,
+ lines: vec![" struct Test {}".to_owned()]
+ }
+ ]
+ });
```
```diff=
- assert_eq!(
- diff,
- vec![Mismatch {
- line_number: 3,
- line_number_orig: 3,
- lines: vec![Resulting("three".to_owned()), Expected("trois".to_owned())],
- }]
- );
+ assert_eq!(diff, vec![Mismatch {
+ line_number: 3,
+ line_number_orig: 3,
+ lines: vec![Resulting("three".to_owned()), Expected("trois".to_owned())],
+ }]);
```
```diff=
- verify_mod_resolution(
- "tests/mod-resolver/issue-5198/lib.rs",
- &[
- "tests/mod-resolver/issue-5198/a.rs",
- "tests/mod-resolver/issue-5198/lib/b.rs",
- "tests/mod-resolver/issue-5198/lib/c/mod.rs",
- "tests/mod-resolver/issue-5198/lib/c/e.rs",
- "tests/mod-resolver/issue-5198/lib/c/d/f.rs",
- "tests/mod-resolver/issue-5198/lib/c/d/g/mod.rs",
- ],
- )
+ verify_mod_resolution("tests/mod-resolver/issue-5198/lib.rs", &[
+ "tests/mod-resolver/issue-5198/a.rs",
+ "tests/mod-resolver/issue-5198/lib/b.rs",
+ "tests/mod-resolver/issue-5198/lib/c/mod.rs",
+ "tests/mod-resolver/issue-5198/lib/c/e.rs",
+ "tests/mod-resolver/issue-5198/lib/c/d/f.rs",
+ "tests/mod-resolver/issue-5198/lib/c/d/g/mod.rs",
+ ])
```
```diff=
- verify_mod_resolution(
- "tests/mod-resolver/skip-files-issue-5065/main.rs",
- &["tests/mod-resolver/skip-files-issue-5065/one.rs"],
- );
+ verify_mod_resolution("tests/mod-resolver/skip-files-issue-5065/main.rs", &[
+ "tests/mod-resolver/skip-files-issue-5065/one.rs",
+ ]);
```
```diff=
- verify_mod_resolution(
- "tests/mod-resolver/issue-5063/main.rs",
- &[
- "tests/mod-resolver/issue-5063/foo/bar/baz.rs",
- "tests/mod-resolver/issue-5063/foo.rs",
- ],
- );
+ verify_mod_resolution("tests/mod-resolver/issue-5063/main.rs", &[
+ "tests/mod-resolver/issue-5063/foo/bar/baz.rs",
+ "tests/mod-resolver/issue-5063/foo.rs",
+ ]);
```
TC: (Net-net, everyone here seems to like these changes overall.)
**Link:** https://github.com/rust-lang/rust/issues/123751
### "Tracking Issue for Rust 2024: rustfmt change sort to Unicode-aware "non-lowercase before lowercase"" rust#123802
**Link:** https://github.com/rust-lang/rust/issues/123802
We're reviewing the diff here:
https://github.com/rust-lang/rustfmt/pull/6284/commits/7f0d9a2284f15e3ffbe6df4cec8006cd3bddf6d3
TC: (This one seems right to everyone here also.)
### Writing the edition guide chapters
TC: We should perhaps think about how to help Caleb with these.
(Discussion to the effect that we can use the normal meeting slot to collaborate on these.)
### style-guide: When breaking binops handle multi-line first operand better #119838
https://github.com/rust-lang/rust/pull/119838
Josh: Can we get this in?
Caleb: Maybe. We'll create a tracking issue and see about it.
(The meeting ended here.)
---
### "Tracking Issue for Rust 2024: rustfmt use version sort" rust#123800
**Link:** https://github.com/rust-lang/rust/issues/123800
### "Tracking Issue for Rust 2024: rustfmt style editions" rust#123799
**Link:** https://github.com/rust-lang/rust/issues/123799
### "Tracking Issue for Rust 2024: rustfmt improve impl generics indentation " rust#124758
**Link:** https://github.com/rust-lang/rust/issues/124758
### "Tracking Issue for Rust 2024: rustfmt trailing comment alignment" rust#124760
**Link:** https://github.com/rust-lang/rust/issues/124760
### "Tracking Issue for Rust 2024: rustfmt raw identifier sorting" rust#124764
**Link:** https://github.com/rust-lang/rust/issues/124764
### "Tracking Issue for Rust 2024: rustfmt closure body braces" rust#124767
**Link:** https://github.com/rust-lang/rust/issues/124767
### "`edition.md` is causing many conflicts" style-team#192
**Link:** https://github.com/rust-lang/style-team/issues/192
## Pending PRs on the style-team repo
None.
## RFCs waiting to be merged
None.
## `S-waiting-on-team`
None.
## Proposed FCPs
**Check your boxes!**
### "style-guide: Note that we don't account for comments in every possible place" rust#121762
**Link:** https://github.com/rust-lang/rust/pull/121762
## Active FCPs
None.
## P-critical issues
None.
## Check-out
(Not minuted.)