fix: respect constAsEnum in all const-emitting code paths(#588) - #637
Open
won-N-only wants to merge 1 commit into
Open
won-N-only wants to merge 1 commit into
won-N-only wants to merge 1 commit into
Conversation
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.
Fixes #588
Problem
constAsEnumis only respected in one of the three places that emit a single fixed value:typescript-json-schema.ts:776typescript-json-schema.ts:973typescript-json-schema.ts:1035So
conststill leaks out with the flag on, and the document is not valid OpenAPI 3.0:What changed
The const-vs-enum decision moves into one
setSingleValuehelper used by all three sites, so they cannot drift apart again. It returns the definition, which keeps the union site's original ternary.Two test cases added — an enum member type, and the reproduction from #588. Both fail on branch
master.Impact
None when
constAsEnumis off, which is the default. The existingenums-value-in-interfacetest covers the same enum member shape with the flag off, still expectsconst, and passes unchanged.Readme.mdReadme.mdis unchanged:--constAsEnumis already documented there and this makes the implementation match it.