From dda6b81dec15c9dd8a0564462544a2a3917c04a7 Mon Sep 17 00:00:00 2001 From: Russell Cohen Date: Thu, 21 Dec 2023 13:13:51 -0500 Subject: [PATCH] Produce into conversions when needed --- .../smithy/generators/ServerBuilderGeneratorCommon.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerBuilderGeneratorCommon.kt b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerBuilderGeneratorCommon.kt index 395a27498..9c80cd125 100644 --- a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerBuilderGeneratorCommon.kt +++ b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerBuilderGeneratorCommon.kt @@ -32,12 +32,15 @@ import software.amazon.smithy.model.shapes.StringShape import software.amazon.smithy.model.shapes.TimestampShape import software.amazon.smithy.model.traits.DefaultTrait import software.amazon.smithy.rust.codegen.core.rustlang.RustWriter +import software.amazon.smithy.rust.codegen.core.rustlang.map +import software.amazon.smithy.rust.codegen.core.rustlang.qualifiedName import software.amazon.smithy.rust.codegen.core.rustlang.rust import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.RuntimeConfig import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider import software.amazon.smithy.rust.codegen.core.smithy.generators.PrimitiveInstantiator +import software.amazon.smithy.rust.codegen.core.smithy.rustType import software.amazon.smithy.rust.codegen.core.util.dq import software.amazon.smithy.rust.codegen.core.util.expectTrait import software.amazon.smithy.rust.codegen.core.util.isStreaming @@ -79,8 +82,14 @@ fun generateFallbackCodeToDefaultValue( symbolProvider: RustSymbolProvider, publicConstrainedTypes: Boolean, ) { - val defaultValue = defaultValue(model, runtimeConfig, symbolProvider, member) + var defaultValue = defaultValue(model, runtimeConfig, symbolProvider, member) val targetShape = model.expectShape(member.target) + val targetSymbol = symbolProvider.toSymbol(targetShape) + // We need an .into() conversion to create defaults for the server types. A larger scale refactoring could store this information in the + // symbol, however, retrieving it in this manner works for the moment. + if (targetSymbol.rustType().qualifiedName().startsWith("::aws_smithy_http_server_python")) { + defaultValue = defaultValue.map { rust("#T.into()", it) } + } if (member.isStreaming(model)) { writer.rust(".unwrap_or_default()") -- GitLab