From 4d889f7f1d7d6acbf13c451ddf8c9a48b242e365 Mon Sep 17 00:00:00 2001 From: Zelda Hessler Date: Thu, 5 Sep 2024 12:27:14 -0500 Subject: [PATCH] fix docgen link (#3815) _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._ --- .../software/amazon/smithy/rustsdk/AwsDocs.kt | 2 +- .../core/smithy/generators/BuilderGenerator.kt | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/AwsDocs.kt b/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/AwsDocs.kt index c68277321..e4aacabfa 100644 --- a/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/AwsDocs.kt +++ b/aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/AwsDocs.kt @@ -73,7 +73,7 @@ object AwsDocs { Occasionally, SDKs may have additional service-specific values that can be set on the [`Config`] that is absent from [`SdkConfig`], or slightly different settings for a specific client may be desired. - The [`Builder`] struct implements `From<&SdkConfig>`, so setting these specific settings can be + The [`Builder`](crate::config::Builder) struct implements `From<&SdkConfig>`, so setting these specific settings can be done as follows: ```rust,no_run diff --git a/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGenerator.kt b/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGenerator.kt index 44f5e8394..bf4817fbf 100644 --- a/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGenerator.kt +++ b/codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGenerator.kt @@ -21,6 +21,7 @@ import software.amazon.smithy.rust.codegen.core.rustlang.asOptional import software.amazon.smithy.rust.codegen.core.rustlang.conditionalBlockTemplate import software.amazon.smithy.rust.codegen.core.rustlang.deprecatedShape import software.amazon.smithy.rust.codegen.core.rustlang.docs +import software.amazon.smithy.rust.codegen.core.rustlang.docsTemplate import software.amazon.smithy.rust.codegen.core.rustlang.documentShape import software.amazon.smithy.rust.codegen.core.rustlang.map import software.amazon.smithy.rust.codegen.core.rustlang.render @@ -91,7 +92,7 @@ fun MemberShape.enforceRequired( } val shape = this val isOptional = codegenContext.symbolProvider.toSymbol(shape).isOptional() - val field = field.letIf(!isOptional) { field.map { rust("Some(#T)", it) } } + val field = field.letIf(!isOptional) { it.map { t -> rust("Some(#T)", t) } } val error = OperationBuildError(codegenContext.runtimeConfig).missingField( codegenContext.symbolProvider.toMemberName(shape), "A required field was not set", @@ -100,10 +101,7 @@ fun MemberShape.enforceRequired( when (codegenContext.model.expectShape(this.target)) { is StringShape -> writable { - rustTemplate( - "#{field}.filter(|f|!AsRef::::as_ref(f).trim().is_empty())", - "field" to field, - ) + rust("#T.filter(|f|!AsRef::::as_ref(f).trim().is_empty())", field) } else -> field @@ -221,7 +219,11 @@ class BuilderGenerator( implBlockWriter.docs("This method will fail if any of the following fields are not set:") trulyRequiredMembers.forEach { val memberName = symbolProvider.toMemberName(it) - implBlockWriter.docs("- [`$memberName`](#T::$memberName)", symbolProvider.symbolForBuilder(shape)) + implBlockWriter.docsTemplate( + // We have to remove the `r##` prefix in the path b/c Rustdoc doesn't support it. + "- [`$memberName`](#{struct}::${memberName.removePrefix("r##")})", + "struct" to symbolProvider.symbolForBuilder(shape), + ) } } implBlockWriter.rustBlockTemplate("pub fn build(self) -> $returnType", *preludeScope) {