Skip to content

Commit

Permalink
Traverse field modifiers in collision avoidance
Browse files Browse the repository at this point in the history
  • Loading branch information
kubukoz committed Sep 26, 2024
1 parent 7ad944d commit c539013
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import smithy4s.ShapeId
import smithy4s.ShapeTag
import smithy4s.schema.Schema.struct

final case class DefaultNotCapitalized(name: Username = smithy4s.example.username("hello"))
final case class DefaultNotCapitalized(name: Username = smithy4s.example.Username("hello"))

object DefaultNotCapitalized extends ShapeTag.Companion[DefaultNotCapitalized] {
val id: ShapeId = ShapeId("smithy4s.example", "DefaultNotCapitalized")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,15 +154,28 @@ private[internals] object CollisionAvoidance {

private def modField(field: Field): Field = {
Field(
protectKeyword(uncapitalise(field.name)),
field.name,
modType(field.tpe),
field.modifier,
field.originalIndex,
field.hints.map(modHint)
name = protectKeyword(uncapitalise(field.name)),
realName = field.name,
tpe = modType(field.tpe),
modifier = modModifier(field.modifier),
originalIndex = field.originalIndex,
hints = field.hints.map(modHint)
)
}

private def modModifier(modifier: Field.Modifier): Field.Modifier =
Field.Modifier(
required = modifier.required,
nullable = modifier.nullable,
default = modifier.default.map(modFieldDefault)
)

private def modFieldDefault(default: Field.Default): Field.Default =
Field.Default(
node = default.node,
typedNode = default.typedNode.map(recursion.preprocess(modTypedNode))
)

private def modStreamingField(
streamingField: StreamingField
): StreamingField = {
Expand Down

0 comments on commit c539013

Please sign in to comment.