Use RAII to keep better track of code generation state#712
Merged
kennykerr merged 1 commit intomicrosoft:masterfrom Aug 1, 2020
oldnewthing:wrapper
Merged
Use RAII to keep better track of code generation state#712kennykerr merged 1 commit intomicrosoft:masterfrom oldnewthing:wrapper
kennykerr merged 1 commit intomicrosoft:masterfrom
oldnewthing:wrapper
Conversation
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_types` exactly match the previous behavior, except that `abi_types` is now `false` during the generation of `write_forward` for forward declarations of types from other namespaces, when it used to be `true`. Fortunately, it doesn't seem to matter, since those forward types don't appear to be affected by the setting of `abi_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_names` in `component_writers.h` is still somewhat unclear, so I left that part alone. Verified that all generated header files (both by `build_projection.h` and `Generated 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).
kennykerr
approved these changes
Aug 1, 2020
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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