fix: prevent panic when formatting complex generics #6630
+46
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #6571
Problem
rustfmt panics with
Option::unwrap() on a None value
when formatting enums with very long generic type constraints. This occurs when the generic constraints exceed the available width budget (~80-100 characters), causingrewrite_generics
to fail andformat_generics
to returnNone
, which is then unwrapped.Solution
This PR implements a three-tier fallback strategy in
format_generics
:shape.infinite_width()
Changes
format_generics
function insrc/items.rs
to handle width budget exhaustion gracefullyissue-6571.rs
to prevent future regressionsTesting
This fix ensures rustfmt can process files with complex generic constraints without crashing, while maintaining proper formatting where possible.