Skip to content

Commit aa6e25e

Browse files
authored
Check for only structure shapes for circular dependency (#277)
1 parent 944ac96 commit aa6e25e

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/StructuredMemberWriter.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -193,28 +193,26 @@ private boolean isMemberOverwriteRequired(MemberShape member, Set<String> parent
193193
}
194194

195195
Shape memberTarget = model.expectShape(member.getTarget());
196-
parents.add(symbolProvider.toMemberName(member));
197196
if (memberTarget.isUnionShape()) {
198197
// always call filterSensitiveLog for UnionShape
199198
return true;
200199
} else if (memberTarget.isStructureShape()) {
201-
Collection<MemberShape> structureMemberList = ((StructureShape) memberTarget).getAllMembers().values();
202-
for (MemberShape structureMember: structureMemberList) {
203-
if (!parents.contains(symbolProvider.toMemberName(structureMember))
204-
&& isMemberOverwriteRequired(structureMember, parents)) {
205-
return true;
200+
if (!parents.contains(symbolProvider.toMemberName(member))) {
201+
parents.add(symbolProvider.toMemberName(member));
202+
Collection<MemberShape> structureMemberList = ((StructureShape) memberTarget).getAllMembers().values();
203+
for (MemberShape structureMember: structureMemberList) {
204+
if (!parents.contains(symbolProvider.toMemberName(structureMember))
205+
&& isMemberOverwriteRequired(structureMember, parents)) {
206+
return true;
207+
}
206208
}
207209
}
208210
} else if (memberTarget instanceof CollectionShape) {
209211
MemberShape collectionMember = ((CollectionShape) memberTarget).getMember();
210-
if (!parents.contains(symbolProvider.toMemberName(collectionMember))) {
211-
return isMemberOverwriteRequired(collectionMember, parents);
212-
}
212+
return isMemberOverwriteRequired(collectionMember, parents);
213213
} else if (memberTarget instanceof MapShape) {
214214
MemberShape mapMember = ((MapShape) memberTarget).getValue();
215-
if (!parents.contains(symbolProvider.toMemberName(mapMember))) {
216-
return isMemberOverwriteRequired(mapMember, parents);
217-
}
215+
return isMemberOverwriteRequired(mapMember, parents);
218216
}
219217
return false;
220218
}

0 commit comments

Comments
 (0)