-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make TypeFolder::fold_*
return Result
#432
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed. cc @rust-lang/compiler @rust-lang/compiler-contributors |
@rustbot second |
@rustbot label -final-comment-period +major-change-accepted |
Make `TypeFolder::fold_*` return `Result` Implements rust-lang/compiler-team#432. Initially this is just a rebase of `@LeSeulArtichaut's` work in rust-lang#85469 (abandoned; see rust-lang#85485 (comment)). At that time, it caused a regression in performance that required some further exploration... with this rebased PR bors can hopefully report some perf analysis from which we can investigate further (if the regression is indeed still present). r? `@jackh726` cc `@nikomatsakis`
Introduce `Folder::Error` Equivalent to rust-lang/rust#85469, cc rust-lang/compiler-team#432 rust-lang/types-team#16. This compiles, but there are implementations of `Folder` that still use `Fallible<T>` instead of `Result<T, Self::Error>`. I can make that change if it is deemed beneficial. r? `@jackh726`
Proposal
Add a
TypeFolder::Error
associated type, and make allTypeFolder::fold_xxx
methods return aResult<XXX, Self::Error>
.This gives more flexibility to implementors of the trait:
Error = !
Err
, possibly holding a meaningful valueImplementation in rust-lang/rust#85469.
This is similar to #383, which added
TypeVisitor::BreakTy
.This is also a part of the Traits WG's plan for a shared type library (cc rust-lang/types-team#16)
Example application
rust-lang/rust#85103: if we want to compute the layout of a type, we first need to normalize it, but normalization panics if it fails. One way to fix this is to make normalization, which uses
TypeFolder
, return aResult
instead of panicking. This would be easy if this proposal was implemented.Mentors or Reviewers
@jackh726
Process
The main points of the Major Change Process are as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.You can read more about Major Change Proposals on forge.
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.
The text was updated successfully, but these errors were encountered: