diff --git a/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/MiddlewareExecutionGenerator.kt b/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/MiddlewareExecutionGenerator.kt index 8a5fc8823..4cf8c341b 100644 --- a/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/MiddlewareExecutionGenerator.kt +++ b/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/MiddlewareExecutionGenerator.kt @@ -58,18 +58,19 @@ class MiddlewareExecutionGenerator( } """.trimIndent() ) - // Swift can't infer the generic arguments to `create` for some reason - writer.write( - """ - config.httpInterceptorProviders.forEach { provider in - let i: any ${'$'}N<${'$'}N, ${'$'}N> = provider.create() - builder.interceptors.add(i) - } - """.trimIndent(), - ClientRuntimeTypes.Core.HttpInterceptor, - inputShape, - outputShape, - ) + writer.openBlock( + "config.httpInterceptorProviders.forEach { (provider: any \$N) -> Void in", + "}", + ClientRuntimeTypes.Core.HttpInterceptorProvider, + ) { + writer.write( + "let i: any \$N<\$N, \$N> = provider.create()", + ClientRuntimeTypes.Core.HttpInterceptor, + inputShape, + outputShape, + ) + writer.write("builder.interceptors.add(i)") + } renderMiddlewares(ctx, op, operationStackName) diff --git a/smithy-swift-codegen/src/test/kotlin/EventStreamTests.kt b/smithy-swift-codegen/src/test/kotlin/EventStreamTests.kt index b7ca6641e..77dd24f6a 100644 --- a/smithy-swift-codegen/src/test/kotlin/EventStreamTests.kt +++ b/smithy-swift-codegen/src/test/kotlin/EventStreamTests.kt @@ -218,7 +218,7 @@ extension EventStreamTestClientTypes.TestStream { config.interceptorProviders.forEach { provider in builder.interceptors.add(provider.create()) } - config.httpInterceptorProviders.forEach { provider in + config.httpInterceptorProviders.forEach { (provider: any ClientRuntime.HttpInterceptorProvider) -> Void in let i: any ClientRuntime.HttpInterceptor = provider.create() builder.interceptors.add(i) } diff --git a/smithy-swift-codegen/src/test/kotlin/HttpProtocolClientGeneratorTests.kt b/smithy-swift-codegen/src/test/kotlin/HttpProtocolClientGeneratorTests.kt index 77f897550..2d8fe5cee 100644 --- a/smithy-swift-codegen/src/test/kotlin/HttpProtocolClientGeneratorTests.kt +++ b/smithy-swift-codegen/src/test/kotlin/HttpProtocolClientGeneratorTests.kt @@ -158,7 +158,7 @@ extension RestJsonProtocolClient { config.interceptorProviders.forEach { provider in builder.interceptors.add(provider.create()) } - config.httpInterceptorProviders.forEach { provider in + config.httpInterceptorProviders.forEach { (provider: any ClientRuntime.HttpInterceptorProvider) -> Void in let i: any ClientRuntime.HttpInterceptor = provider.create() builder.interceptors.add(i) }