diff --git a/CHANGELOG.next.toml b/CHANGELOG.next.toml index c18ab499ef..780f18a25e 100644 --- a/CHANGELOG.next.toml +++ b/CHANGELOG.next.toml @@ -27,3 +27,9 @@ message = "Add comments for docker settings needed when using this sdk" references = ["aws-sdk-rust#540"] meta = { "breaking" = false, "tada" = false, "bug" = false } author = "jmklix" + +[[smithy-rs]] +message = "Fix issue with codegen on Windows where module names were incorrectly determined from filenames" +references = ["smithy-rs#1505"] +meta = { "breaking" = false, "tada" = false, "bug" = true } +author = "kiiadi" diff --git a/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/rustlang/RustWriter.kt b/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/rustlang/RustWriter.kt index 8faddc40b5..591a3d19d7 100644 --- a/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/rustlang/RustWriter.kt +++ b/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/rustlang/RustWriter.kt @@ -24,6 +24,7 @@ import software.amazon.smithy.rust.codegen.smithy.isOptional import software.amazon.smithy.rust.codegen.smithy.rustType import software.amazon.smithy.rust.codegen.util.orNull import software.amazon.smithy.utils.AbstractCodeWriter +import java.io.File import java.util.function.BiFunction /** @@ -393,7 +394,7 @@ class RustWriter private constructor( } fun module(): String? = if (filename.startsWith("src") && filename.endsWith(".rs")) { - filename.removeSuffix(".rs").split('/').last() + filename.removeSuffix(".rs").substringAfterLast(File.separatorChar) } else null fun safeName(prefix: String = "var"): String { diff --git a/codegen/src/test/kotlin/software/amazon/smithy/rust/lang/RustWriterTest.kt b/codegen/src/test/kotlin/software/amazon/smithy/rust/lang/RustWriterTest.kt index aee26d475c..b42dbe7773 100644 --- a/codegen/src/test/kotlin/software/amazon/smithy/rust/lang/RustWriterTest.kt +++ b/codegen/src/test/kotlin/software/amazon/smithy/rust/lang/RustWriterTest.kt @@ -143,4 +143,10 @@ class RustWriterTest { ) sut.toString().shouldContain("inner: hello, regular: http::foo") } + + @Test + fun `can handle file paths properly when determining module`() { + val sut = RustWriter.forModule("src/module_name") + sut.module().shouldBe("module_name") + } }