builder,checker,ast: move auto str() before backend gen #25857
+330
−12
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.
Feature request by #25826
This PR aims to decouple the
auto_str()function from individual backend generators and move it to the frontend. This way, each backend can remove its ownauto_str()implementation.The general approach is to introduce a new phase,
gen_auto_fn()in thebuilder—after thecheckerand before code generation. This phase leverages the results from thecheckerandmarkusedto identify which types require theauto_str()function. It then manually creates these virtual functions, processes them usingparser.parse_text(), and performs checks viacheck(). The output is subsequently passed to the respective backends for code generation.Currently, only the generation of
auto_str()for structs is supported. Future extensions may include support for otherstr()functions, with the ultimate goal of fully migrating this functionality to the frontend.