Use RAII to keep better track of code generation state #712
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.
Instead of having everybody just whack state variables (which results in a rats nest of "I don't know what state I'm in any more"), use RAII types to scope the state changes.
The changes for
abi_typesexactly match the previous behavior, except thatabi_typesis nowfalseduring the generation ofwrite_forwardfor forward declarations of types from other namespaces, when it used to betrue. Fortunately, it doesn't seem to matter, since those forward types don't appear to be affected by the setting ofabi_types.Cannot use RAII types for the file guards because we generate the bottom half of the header file before the top half.
The state of
param_namesincomponent_writers.his still somewhat unclear, so I left that part alone.Verified that all generated header files (both by
build_projection.cmdandGenerated Files\*.h) are identical both before and after this change, even with a private hacked pair of builds that assumed all types supported FastABI (which lights up new code paths).Aside from the
param_namesissue, this fixes #516