From 9db2cfb45eb882d1b21139e0241d82e1d64c8129 Mon Sep 17 00:00:00 2001 From: Harry Barber Date: Mon, 13 Feb 2023 11:34:16 +0000 Subject: [PATCH 1/6] Make service name casing consistent --- .../codegen/server/smithy/generators/ServerServiceGenerator.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt index baf10e8b4b..62685cb9ae 100644 --- a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt +++ b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt @@ -42,7 +42,7 @@ open class ServerServiceGenerator( ) { private val index = TopDownIndex.of(codegenContext.model) protected val operations = index.getContainedOperations(codegenContext.serviceShape).sortedBy { it.id } - private val serviceName = codegenContext.serviceShape.id.name.toString() + private val serviceName = codegenContext.serviceShape.id.name.toPascalCase() fun documentation(writer: RustWriter) { val operations = index.getContainedOperations(codegenContext.serviceShape).toSortedSet(compareBy { it.id }) From 9dcd5e33b85aade686057b7198495db072ec6382 Mon Sep 17 00:00:00 2001 From: Harry Barber Date: Mon, 13 Feb 2023 11:34:39 +0000 Subject: [PATCH 2/6] Add naming-obstacle-course-casing.smithy --- codegen-client-test/build.gradle.kts | 5 ++ .../naming-obstacle-course-casing.smithy | 60 +++++++++++++++++++ codegen-server-test/build.gradle.kts | 1 + 3 files changed, 66 insertions(+) create mode 100644 codegen-core/common-test-models/naming-obstacle-course-casing.smithy diff --git a/codegen-client-test/build.gradle.kts b/codegen-client-test/build.gradle.kts index 434bcef65f..f3796a6911 100644 --- a/codegen-client-test/build.gradle.kts +++ b/codegen-client-test/build.gradle.kts @@ -79,6 +79,11 @@ val allCodegenTests = "../codegen-core/common-test-models".let { commonModels -> """.trimIndent(), imports = listOf("$commonModels/naming-obstacle-course-ops.smithy"), ), + CodegenTest( + "casing#ACRONYMInside_Service", + "naming_test_casing", + imports = listOf("$commonModels/naming-obstacle-course-casing.smithy"), + ), CodegenTest( "naming_obs_structs#NamingObstacleCourseStructs", "naming_test_structs", diff --git a/codegen-core/common-test-models/naming-obstacle-course-casing.smithy b/codegen-core/common-test-models/naming-obstacle-course-casing.smithy new file mode 100644 index 0000000000..35056860dc --- /dev/null +++ b/codegen-core/common-test-models/naming-obstacle-course-casing.smithy @@ -0,0 +1,60 @@ +$version: "1.0" +namespace casing + +use aws.protocols#awsJson1_1 + +// TODO(https://github.com/awslabs/smithy-rs/issues/2340): The commented part of the model breaks the code in a miriad +// of ways. The solution to the linked issue must solve them. + +/// Confounds model generation machinery with lots of problematic casing +@awsJson1_1 +service ACRONYMInside_Service { + operations: [ + ACRONYMInside_Op + // ACRONYM_InsideOp + ] +} + +operation ACRONYMInside_Op { + // input: Input, + // output: Output, + // errors: [Error], +} + +// operation ACRONYM_InsideOp { +// input: Input, +// output: Output, +// errors: [Error], +// } + +// structure Input { +// ACRONYMInside_Member: ACRONYMInside_Struct, +// ACRONYM_Inside_Member: ACRONYM_InsideStruct, +// ACRONYM_InsideMember: ACRONYMInsideStruct +// } + +// structure Output { +// ACRONYMInside_Member: ACRONYMInside_Struct, +// ACRONYM_Inside_Member: ACRONYM_InsideStruct, +// ACRONYM_InsideMember: ACRONYMInsideStruct +// } + +// @error("client") +// structure Error { +// ACRONYMInside_Member: ACRONYMInside_Struct, +// ACRONYM_Inside_Member: ACRONYM_InsideStruct, +// ACRONYM_InsideMember: ACRONYMInsideStruct +// } + +// structure ACRONYMInside_Struct { +// ACRONYMInside_Member: ACRONYM_InsideStruct, +// ACRONYM_Inside_Member: Integer, +// } + +// structure ACRONYM_InsideStruct { +// ACRONYMInside_Member: Integer, +// } + +// structure ACRONYMInsideStruct { +// ACRONYMInside_Member: Integer, +// } diff --git a/codegen-server-test/build.gradle.kts b/codegen-server-test/build.gradle.kts index b2841452c1..d8ec164a40 100644 --- a/codegen-server-test/build.gradle.kts +++ b/codegen-server-test/build.gradle.kts @@ -38,6 +38,7 @@ dependencies { val allCodegenTests = "../codegen-core/common-test-models".let { commonModels -> listOf( CodegenTest("crate#Config", "naming_test_ops", imports = listOf("$commonModels/naming-obstacle-course-ops.smithy")), + CodegenTest("casing#ACRONYMInside_Service", "naming_test_casing", imports = listOf("$commonModels/naming-obstacle-course-casing.smithy")), CodegenTest( "naming_obs_structs#NamingObstacleCourseStructs", "naming_test_structs", From da575123946154bd8fd4766c50cf2a5d6d41750f Mon Sep 17 00:00:00 2001 From: Harry Barber Date: Mon, 13 Feb 2023 11:54:47 +0000 Subject: [PATCH 3/6] Add missing import --- .../codegen/server/smithy/generators/ServerServiceGenerator.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt index 62685cb9ae..fc7e2cdd8b 100644 --- a/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt +++ b/codegen-server/src/main/kotlin/software/amazon/smithy/rust/codegen/server/smithy/generators/ServerServiceGenerator.kt @@ -17,6 +17,7 @@ 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.smithy.RustCrate import software.amazon.smithy.rust.codegen.core.smithy.generators.protocol.ProtocolSupport +import software.amazon.smithy.rust.codegen.core.util.toPascalCase import software.amazon.smithy.rust.codegen.core.util.toSnakeCase import software.amazon.smithy.rust.codegen.server.smithy.ServerCargoDependency import software.amazon.smithy.rust.codegen.server.smithy.ServerCodegenContext From 0b003da7b25b7c28db3a6c18a55e0edcb59c5f0c Mon Sep 17 00:00:00 2001 From: Harry Barber Date: Mon, 13 Feb 2023 12:10:19 +0000 Subject: [PATCH 4/6] Relax obstacle course even further --- .../naming-obstacle-course-casing.smithy | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/codegen-core/common-test-models/naming-obstacle-course-casing.smithy b/codegen-core/common-test-models/naming-obstacle-course-casing.smithy index 35056860dc..992303c252 100644 --- a/codegen-core/common-test-models/naming-obstacle-course-casing.smithy +++ b/codegen-core/common-test-models/naming-obstacle-course-casing.smithy @@ -10,16 +10,19 @@ use aws.protocols#awsJson1_1 @awsJson1_1 service ACRONYMInside_Service { operations: [ - ACRONYMInside_Op + DoNothing, + // ACRONYMInside_Op // ACRONYM_InsideOp ] } -operation ACRONYMInside_Op { - // input: Input, - // output: Output, - // errors: [Error], -} +operation DoNothing {} + +// operation ACRONYMInside_Op { +// input: Input, +// output: Output, +// errors: [Error], +// } // operation ACRONYM_InsideOp { // input: Input, From 8ad1f9abae2d7cd06649ab309d4119a7f6bfc561 Mon Sep 17 00:00:00 2001 From: Harry Barber Date: Mon, 13 Feb 2023 13:21:15 +0000 Subject: [PATCH 5/6] Better TODO --- .../common-test-models/naming-obstacle-course-casing.smithy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codegen-core/common-test-models/naming-obstacle-course-casing.smithy b/codegen-core/common-test-models/naming-obstacle-course-casing.smithy index 992303c252..fb80a46d48 100644 --- a/codegen-core/common-test-models/naming-obstacle-course-casing.smithy +++ b/codegen-core/common-test-models/naming-obstacle-course-casing.smithy @@ -3,8 +3,8 @@ namespace casing use aws.protocols#awsJson1_1 -// TODO(https://github.com/awslabs/smithy-rs/issues/2340): The commented part of the model breaks the code in a miriad -// of ways. The solution to the linked issue must solve them. +// TODO(https://github.com/awslabs/smithy-rs/issues/2340): The commented part of the model breaks the generator in a +// miriad of ways. Any solution to the linked issue must address this. /// Confounds model generation machinery with lots of problematic casing @awsJson1_1 From 0c5d3cef5dd74f4b2be8f5399f910390d21511ef Mon Sep 17 00:00:00 2001 From: Harry Barber Date: Mon, 13 Feb 2023 14:38:31 +0000 Subject: [PATCH 6/6] Add CHANGELOG.next.toml --- CHANGELOG.next.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.next.toml b/CHANGELOG.next.toml index 7e1b9862cb..d1d98ba8ae 100644 --- a/CHANGELOG.next.toml +++ b/CHANGELOG.next.toml @@ -192,3 +192,9 @@ message = "`aws_smithy_types::Error` has been renamed to `aws_smithy_types::erro references = ["smithy-rs#76", "smithy-rs#2129"] meta = { "breaking" = true, "tada" = false, "bug" = false } author = "jdisanti" + +[[smithy-rs]] +message = "Fix inconsistent casing in services re-export." +references = ["smithy-rs#2349"] +meta = { "breaking" = false, "tada" = false, "bug" = true, "target" = "server" } +author = "hlbarber"