From aaed5058bd89e58e65946ef021096ca97ee786d8 Mon Sep 17 00:00:00 2001
From: david-perez <d@vidp.dev>
Date: Mon, 11 Apr 2022 18:33:04 +0200
Subject: [PATCH] Make `builderSymbol` return a `Symbol` (#1312)

It currently returns a `RuntimeType`. It makes no actual difference
whatsoever, but `RuntimeType` is kept for types we don't code-generate,
but that we use from other crates.
---
 .../codegen/smithy/generators/BuilderGenerator.kt  | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/generators/BuilderGenerator.kt b/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/generators/BuilderGenerator.kt
index ada585e05..7d0afd2c2 100644
--- a/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/generators/BuilderGenerator.kt
+++ b/codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/generators/BuilderGenerator.kt
@@ -35,10 +35,16 @@ import software.amazon.smithy.rust.codegen.smithy.rustType
 import software.amazon.smithy.rust.codegen.util.dq
 import software.amazon.smithy.rust.codegen.util.toSnakeCase
 
-fun StructureShape.builderSymbol(symbolProvider: RustSymbolProvider): RuntimeType {
-    val symbol = symbolProvider.toSymbol(this)
-    val builderNamespace = RustReservedWords.escapeIfNeeded(symbol.name.toSnakeCase())
-    return RuntimeType("Builder", null, "${symbol.namespace}::$builderNamespace")
+fun StructureShape.builderSymbol(symbolProvider: RustSymbolProvider): Symbol {
+    val structureSymbol = symbolProvider.toSymbol(this)
+    val builderNamespace = RustReservedWords.escapeIfNeeded(structureSymbol.name.toSnakeCase())
+    val rustType = RustType.Opaque("Builder", "${structureSymbol.namespace}::$builderNamespace")
+    return Symbol.builder()
+        .rustType(rustType)
+        .name(rustType.name)
+        .namespace(rustType.namespace, "::")
+        .definitionFile(structureSymbol.definitionFile)
+        .build()
 }
 
 fun RuntimeConfig.operationBuildError() = RuntimeType.operationModule(this).member("BuildError")
-- 
GitLab