--- 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.)