Skip to content

Commit

Permalink
Fix generation of constrained shapes reaching @sensitive shapes (#2585
Browse files Browse the repository at this point in the history
)

Constrained shapes should always be able to `#[derive(Debug)]`.

Fixes #2582.

## Testing

The modified integration test fails without this patch applied.

## Checklist
<!--- If a checkbox below is not applicable, then please DELETE it
rather than leaving it unchecked -->
- [x] I have updated `CHANGELOG.next.toml` if I made changes to the
smithy-rs codegen or runtime crates

----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._

Co-authored-by: Matteo Bigoi <1781140+crisidev@users.noreply.github.com>
  • Loading branch information
david-perez and crisidev committed Apr 18, 2023
1 parent 04cf5e6 commit 80f25d4
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.next.toml
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,9 @@ message = "`aws_smithy_types::date_time::Format` has been re-exported in service
references = ["smithy-rs#2534"]
meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client" }
author = "ysaito1001"

[[smithy-rs]]
message = "Fix generation of constrained shapes reaching `@sensitive` shapes"
references = ["smithy-rs#2582", "smithy-rs#2585"]
meta = { "breaking" = false, "tada" = false, "bug" = true, "target" = "server" }
author = "david-perez"
9 changes: 9 additions & 0 deletions codegen-core/common-test-models/constraints.smithy
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,7 @@ structure ConA {

conBList: ConBList,
lengthList: LengthList,
sensitiveLengthList: SensitiveLengthList,

conBSet: ConBSet,

Expand Down Expand Up @@ -866,6 +867,14 @@ list LengthList {
member: String
}

@length(max: 69)
list SensitiveLengthList {
member: SensitiveStructure
}

@sensitive
structure SensitiveStructure { }

set ConBSet {
member: ConBSetInner
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import software.amazon.smithy.model.shapes.StructureShape
import software.amazon.smithy.model.shapes.UnionShape
import software.amazon.smithy.rust.codegen.core.rustlang.RustMetadata
import software.amazon.smithy.rust.codegen.core.rustlang.Visibility
import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType
import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider
import software.amazon.smithy.rust.codegen.core.smithy.SymbolMetadataProvider
import software.amazon.smithy.rust.codegen.core.smithy.containerDefaultMetadata
Expand Down Expand Up @@ -47,6 +48,11 @@ class ConstrainedShapeSymbolMetadataProvider(
derives += containerDefaultMetadata(shape, model).derives
}

// We should _always_ be able to `#[derive(Debug)]`: all constrained shapes' types are simply tuple newtypes
// wrapping a single type which always implements `Debug`.
// The wrapped type may not _derive_ `Debug` though, hence why this line is required; see https://github.com/awslabs/smithy-rs/issues/2582.
derives += RuntimeType.Debug

val visibility = Visibility.publicIf(constrainedTypes, Visibility.PUBCRATE)
return RustMetadata(derives, additionalAttributes, visibility)
}
Expand Down

0 comments on commit 80f25d4

Please sign in to comment.