Add a new Resolve::generate_nominal_type_ids method
#2447
Merged
+690
−61
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.
This commit adds a new method to
Resolvewhich is intended to resolve a longstanding issue for bindings generators based onwit-parser: #1497. Specifically this adds functionality toResolveto duplicate exported interfaces and their contents, if necessary. This is a boon to bindings generators because it means that aTypeId, for example, uniquely identifies a single generated type. Previously it might refer to one of two types, either the imported version or the exported version. After this method, however, there will be twoTypeIds if necessary.This is currently modeled as a mutation to
Resolvewhich is opt-in. This is done to avoid tampering with the AST-like structure ofResolvetoday where other AST-like operations don't want to necessarily have to keep everything in sync. Once aResolveis nominalized, however, it's effectively incompatible with other operations such as merging, printing, etc. My thinking is that for now this is a reasonable tradeoff as bindings generators can pretty easily invoke this method before actually running bindings generation.Closes #1497