Copy "seen" before handing it to resolve_schema_references to prevent… #1
+2
−2
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.
Hi Jonvet,
thanks for solving this problem! I ran into it as well and found your PR (tadata-org#156). When I used your proposed fix though I found that there is one specific case where the current version of the code makes a mistake. It happens when a model has two properties on the same level that are of the self-referencing type. When this happens the second (and following...) properties are treated differently than the first one although they are at the same level.
Adding a copy to the seen set before handing it to new passes of resolve_schema_references makes sure that this does not happen as the first instance is not updating the parent set.
An example where this would happen:
In this case playerB will be represented by the $ref while playerA is allowed one level of recursion.