Fix replacing shapes when traits applied to mixed-in members #1509
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 PR fixes how mixin shapes are updated in the ReplaceShapes transform, which is used by other transforms, such as the
excludeShapesByTag
orexcludeTraitsByTag
.Take this model:
With this smithy-build.json:
Currently, when traits are applied to mixed-in members via an apply statement, a spurious CycleDetection error is thrown when attempting to update the mixed in
ns.example#StructForMixin$foo
member to remove themytrait
trait that was added through an apply statement.This change prevents extra forward references from being enqueued by the Topological shape sorter that's used to update mixins.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.