Loading aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/AwsPresigningDecorator.kt +1 −1 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ class AwsInputPresignedMethod( } private fun RustWriter.writeInputPresignedMethod(section: OperationSection.InputImpl) { val operationError = operationShape.errorSymbol(codegenContext.model, symbolProvider, codegenContext.target) val operationError = operationShape.errorSymbol(symbolProvider) val presignableOp = PRESIGNABLE_OPERATIONS.getValue(operationShape.id) val makeOperationOp = if (presignableOp.hasModelTransforms()) { Loading codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/ClientCodegenVisitor.kt +32 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import software.amazon.smithy.build.PluginContext import software.amazon.smithy.model.Model import software.amazon.smithy.model.knowledge.NullableIndex import software.amazon.smithy.model.neighbor.Walker import software.amazon.smithy.model.shapes.OperationShape import software.amazon.smithy.model.shapes.ServiceShape import software.amazon.smithy.model.shapes.Shape import software.amazon.smithy.model.shapes.ShapeVisitor Loading @@ -23,6 +24,7 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.protocol.Cli import software.amazon.smithy.rust.codegen.client.smithy.protocols.ClientProtocolLoader import software.amazon.smithy.rust.codegen.client.smithy.transformers.AddErrorMessage import software.amazon.smithy.rust.codegen.client.smithy.transformers.RemoveEventStreamOperations import software.amazon.smithy.rust.codegen.core.rustlang.RustModule import software.amazon.smithy.rust.codegen.core.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider import software.amazon.smithy.rust.codegen.core.smithy.SymbolVisitorConfig Loading @@ -30,15 +32,20 @@ import software.amazon.smithy.rust.codegen.core.smithy.generators.BuilderGenerat import software.amazon.smithy.rust.codegen.core.smithy.generators.EnumGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.StructureGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.UnionGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.error.OperationErrorGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.error.eventStreamErrorSymbol import software.amazon.smithy.rust.codegen.core.smithy.generators.implBlock import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolGeneratorFactory import software.amazon.smithy.rust.codegen.core.smithy.traits.SyntheticInputTrait import software.amazon.smithy.rust.codegen.core.smithy.transformers.EventStreamNormalizer import software.amazon.smithy.rust.codegen.core.smithy.transformers.OperationNormalizer import software.amazon.smithy.rust.codegen.core.smithy.transformers.RecursiveShapeBoxer import software.amazon.smithy.rust.codegen.core.smithy.transformers.eventStreamErrors import software.amazon.smithy.rust.codegen.core.smithy.transformers.operationErrors import software.amazon.smithy.rust.codegen.core.util.CommandFailed import software.amazon.smithy.rust.codegen.core.util.getTrait import software.amazon.smithy.rust.codegen.core.util.hasTrait import software.amazon.smithy.rust.codegen.core.util.isEventStream import software.amazon.smithy.rust.codegen.core.util.letIf import software.amazon.smithy.rust.codegen.core.util.runCommand import java.util.logging.Logger Loading Loading @@ -217,5 +224,30 @@ class ClientCodegenVisitor( rustCrate.useShapeWriter(shape) { UnionGenerator(model, symbolProvider, this, shape, renderUnknownVariant = true).render() } if (shape.isEventStream()) { rustCrate.withModule(RustModule.Error) { val symbol = symbolProvider.toSymbol(shape) val errors = shape.eventStreamErrors() .map { model.expectShape(it.asMemberShape().get().target, StructureShape::class.java) } val errorSymbol = shape.eventStreamErrorSymbol(symbolProvider) OperationErrorGenerator(model, symbolProvider, symbol, errors) .renderErrors(this, errorSymbol, symbol) } } } /** * Generate errors for operation shapes */ override fun operationShape(shape: OperationShape) { rustCrate.withModule(RustModule.Error) { val operationSymbol = symbolProvider.toSymbol(shape) OperationErrorGenerator( model, symbolProvider, operationSymbol, shape.operationErrors(model).map { it.asStructureShape().get() }, ).render(this) } } } codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/PaginatorGenerator.kt +1 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.stripOuter import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext import software.amazon.smithy.rust.codegen.core.smithy.CodegenTarget 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.generators.builderSymbol Loading Loading @@ -80,7 +79,7 @@ class PaginatorGenerator private constructor( private val inputType = symbolProvider.toSymbol(operation.inputShape(model)) private val outputShape = operation.outputShape(model) private val outputType = symbolProvider.toSymbol(outputShape) private val errorType = operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT) private val errorType = operation.errorSymbol(symbolProvider) private fun paginatorType(): RuntimeType = RuntimeType.forInlineFun( paginatorName, Loading codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/ServiceGenerator.kt +2 −2 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.protocol.Pro import software.amazon.smithy.rust.codegen.core.rustlang.Attribute import software.amazon.smithy.rust.codegen.core.rustlang.RustModule import software.amazon.smithy.rust.codegen.core.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.generators.error.TopLevelErrorGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.error.ServiceErrorGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.protocol.ProtocolSupport import software.amazon.smithy.rust.codegen.core.util.inputShape Loading Loading @@ -56,7 +56,7 @@ class ServiceGenerator( } } TopLevelErrorGenerator(clientCodegenContext, operations).render(rustCrate) ServiceErrorGenerator(clientCodegenContext, operations).render(rustCrate) rustCrate.withModule(RustModule.Config) { ServiceConfigGenerator.withBaseBehavior( Loading codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/client/FluentClientGenerator.kt +3 −4 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.rustTypeParameters import software.amazon.smithy.rust.codegen.core.rustlang.stripOuter import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.CodegenTarget import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType import software.amazon.smithy.rust.codegen.core.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider Loading Loading @@ -167,7 +166,7 @@ class FluentClientGenerator( val output = operation.outputShape(model) val operationOk = symbolProvider.toSymbol(output) val operationErr = operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT).toSymbol() val operationErr = operation.errorSymbol(symbolProvider).toSymbol() val inputFieldsBody = generateOperationShapeDocs(writer, symbolProvider, operation, model).joinToString("\n") { Loading Loading @@ -261,7 +260,7 @@ class FluentClientGenerator( "bounds" to generics.bounds, ) { val outputType = symbolProvider.toSymbol(operation.outputShape(model)) val errorType = operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT) val errorType = operation.errorSymbol(symbolProvider) // Have to use fully-qualified result here or else it could conflict with an op named Result rustTemplate( Loading Loading @@ -331,7 +330,7 @@ class FluentClientGenerator( customizations, FluentClientSection.FluentBuilderImpl( operation, operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT), operation.errorSymbol(symbolProvider), ), ) input.members().forEach { member -> Loading Loading
aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/AwsPresigningDecorator.kt +1 −1 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ class AwsInputPresignedMethod( } private fun RustWriter.writeInputPresignedMethod(section: OperationSection.InputImpl) { val operationError = operationShape.errorSymbol(codegenContext.model, symbolProvider, codegenContext.target) val operationError = operationShape.errorSymbol(symbolProvider) val presignableOp = PRESIGNABLE_OPERATIONS.getValue(operationShape.id) val makeOperationOp = if (presignableOp.hasModelTransforms()) { Loading
codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/ClientCodegenVisitor.kt +32 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import software.amazon.smithy.build.PluginContext import software.amazon.smithy.model.Model import software.amazon.smithy.model.knowledge.NullableIndex import software.amazon.smithy.model.neighbor.Walker import software.amazon.smithy.model.shapes.OperationShape import software.amazon.smithy.model.shapes.ServiceShape import software.amazon.smithy.model.shapes.Shape import software.amazon.smithy.model.shapes.ShapeVisitor Loading @@ -23,6 +24,7 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.protocol.Cli import software.amazon.smithy.rust.codegen.client.smithy.protocols.ClientProtocolLoader import software.amazon.smithy.rust.codegen.client.smithy.transformers.AddErrorMessage import software.amazon.smithy.rust.codegen.client.smithy.transformers.RemoveEventStreamOperations import software.amazon.smithy.rust.codegen.core.rustlang.RustModule import software.amazon.smithy.rust.codegen.core.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider import software.amazon.smithy.rust.codegen.core.smithy.SymbolVisitorConfig Loading @@ -30,15 +32,20 @@ import software.amazon.smithy.rust.codegen.core.smithy.generators.BuilderGenerat import software.amazon.smithy.rust.codegen.core.smithy.generators.EnumGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.StructureGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.UnionGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.error.OperationErrorGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.error.eventStreamErrorSymbol import software.amazon.smithy.rust.codegen.core.smithy.generators.implBlock import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolGeneratorFactory import software.amazon.smithy.rust.codegen.core.smithy.traits.SyntheticInputTrait import software.amazon.smithy.rust.codegen.core.smithy.transformers.EventStreamNormalizer import software.amazon.smithy.rust.codegen.core.smithy.transformers.OperationNormalizer import software.amazon.smithy.rust.codegen.core.smithy.transformers.RecursiveShapeBoxer import software.amazon.smithy.rust.codegen.core.smithy.transformers.eventStreamErrors import software.amazon.smithy.rust.codegen.core.smithy.transformers.operationErrors import software.amazon.smithy.rust.codegen.core.util.CommandFailed import software.amazon.smithy.rust.codegen.core.util.getTrait import software.amazon.smithy.rust.codegen.core.util.hasTrait import software.amazon.smithy.rust.codegen.core.util.isEventStream import software.amazon.smithy.rust.codegen.core.util.letIf import software.amazon.smithy.rust.codegen.core.util.runCommand import java.util.logging.Logger Loading Loading @@ -217,5 +224,30 @@ class ClientCodegenVisitor( rustCrate.useShapeWriter(shape) { UnionGenerator(model, symbolProvider, this, shape, renderUnknownVariant = true).render() } if (shape.isEventStream()) { rustCrate.withModule(RustModule.Error) { val symbol = symbolProvider.toSymbol(shape) val errors = shape.eventStreamErrors() .map { model.expectShape(it.asMemberShape().get().target, StructureShape::class.java) } val errorSymbol = shape.eventStreamErrorSymbol(symbolProvider) OperationErrorGenerator(model, symbolProvider, symbol, errors) .renderErrors(this, errorSymbol, symbol) } } } /** * Generate errors for operation shapes */ override fun operationShape(shape: OperationShape) { rustCrate.withModule(RustModule.Error) { val operationSymbol = symbolProvider.toSymbol(shape) OperationErrorGenerator( model, symbolProvider, operationSymbol, shape.operationErrors(model).map { it.asStructureShape().get() }, ).render(this) } } }
codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/PaginatorGenerator.kt +1 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.stripOuter import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext import software.amazon.smithy.rust.codegen.core.smithy.CodegenTarget 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.generators.builderSymbol Loading Loading @@ -80,7 +79,7 @@ class PaginatorGenerator private constructor( private val inputType = symbolProvider.toSymbol(operation.inputShape(model)) private val outputShape = operation.outputShape(model) private val outputType = symbolProvider.toSymbol(outputShape) private val errorType = operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT) private val errorType = operation.errorSymbol(symbolProvider) private fun paginatorType(): RuntimeType = RuntimeType.forInlineFun( paginatorName, Loading
codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/ServiceGenerator.kt +2 −2 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.protocol.Pro import software.amazon.smithy.rust.codegen.core.rustlang.Attribute import software.amazon.smithy.rust.codegen.core.rustlang.RustModule import software.amazon.smithy.rust.codegen.core.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.generators.error.TopLevelErrorGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.error.ServiceErrorGenerator import software.amazon.smithy.rust.codegen.core.smithy.generators.protocol.ProtocolSupport import software.amazon.smithy.rust.codegen.core.util.inputShape Loading Loading @@ -56,7 +56,7 @@ class ServiceGenerator( } } TopLevelErrorGenerator(clientCodegenContext, operations).render(rustCrate) ServiceErrorGenerator(clientCodegenContext, operations).render(rustCrate) rustCrate.withModule(RustModule.Config) { ServiceConfigGenerator.withBaseBehavior( Loading
codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/client/FluentClientGenerator.kt +3 −4 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.rustTypeParameters import software.amazon.smithy.rust.codegen.core.rustlang.stripOuter import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.CodegenTarget import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType import software.amazon.smithy.rust.codegen.core.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.RustSymbolProvider Loading Loading @@ -167,7 +166,7 @@ class FluentClientGenerator( val output = operation.outputShape(model) val operationOk = symbolProvider.toSymbol(output) val operationErr = operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT).toSymbol() val operationErr = operation.errorSymbol(symbolProvider).toSymbol() val inputFieldsBody = generateOperationShapeDocs(writer, symbolProvider, operation, model).joinToString("\n") { Loading Loading @@ -261,7 +260,7 @@ class FluentClientGenerator( "bounds" to generics.bounds, ) { val outputType = symbolProvider.toSymbol(operation.outputShape(model)) val errorType = operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT) val errorType = operation.errorSymbol(symbolProvider) // Have to use fully-qualified result here or else it could conflict with an op named Result rustTemplate( Loading Loading @@ -331,7 +330,7 @@ class FluentClientGenerator( customizations, FluentClientSection.FluentBuilderImpl( operation, operation.errorSymbol(model, symbolProvider, CodegenTarget.CLIENT), operation.errorSymbol(symbolProvider), ), ) input.members().forEach { member -> Loading