Skip to content

Commit 024d02a

Browse files
author
Fahad Zubair
committed
Remove getFieldValue.
1 parent 5fd7eaa commit 024d02a

File tree

4 files changed

+44
-58
lines changed

4 files changed

+44
-58
lines changed

codegen-core/common-test-models/nested-error.smithy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,30 @@ operation SampleOperation {
1616
input:= {}
1717
errors: [
1818
SimpleError,
19-
ErrorWithCompositeShape,
19+
ErrorInInput,
2020
ErrorWithDeepCompositeShape,
21-
ComposedSensitiveError
21+
ComposedSensitiveError,
2222
]
2323
}
2424

2525
@error("client")
26-
structure ErrorWithCompositeShape {
27-
message: ErrorMessage
26+
structure SimpleError {
27+
message: String
2828
}
2929

3030
@error("client")
31-
structure SimpleError {
32-
message: String
31+
structure ErrorInInput {
32+
message: ErrorMessage
3333
}
3434

3535
structure ErrorMessage {
3636
@required
37-
statusCode: String
37+
statusCode: Integer
3838
@required
3939
errorMessage: String
4040
requestId: String
4141
@required
42-
toolName: String
42+
isRetryable: Boolean
4343
}
4444

4545
structure WrappedErrorMessage {

codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/StructureGenerator.kt

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,20 @@ open class StructureGenerator(
109109
) {
110110
writer.rustBlock("fn fmt(&self, f: &mut #1T::Formatter<'_>) -> #1T::Result", RuntimeType.stdFmt) {
111111
rust("""let mut formatter = f.debug_struct(${name.dq()});""")
112+
112113
members.forEach { member ->
113114
val memberName = symbolProvider.toMemberName(member)
114-
val fieldValue = getFieldValue(member, memberName)
115+
// If the struct is marked sensitive all fields get redacted, otherwise each field is determined on its own
116+
val fieldValue =
117+
if (shape.shouldRedact(model)) {
118+
REDACTION
119+
} else {
120+
member.redactIfNecessary(
121+
model,
122+
"self.$memberName",
123+
)
124+
}
125+
115126
rust(
116127
"formatter.field(${memberName.dq()}, &$fieldValue);",
117128
)
@@ -122,23 +133,6 @@ open class StructureGenerator(
122133
}
123134
}
124135

125-
// If the struct is marked sensitive all fields get redacted, otherwise each field is determined on its own.
126-
private fun getFieldValue(
127-
member: MemberShape,
128-
memberName: String?,
129-
): String {
130-
val fieldValue =
131-
if (shape.shouldRedact(model)) {
132-
REDACTION
133-
} else {
134-
member.redactIfNecessary(
135-
model,
136-
"self.$memberName",
137-
)
138-
}
139-
return fieldValue
140-
}
141-
142136
private fun renderImplDisplayIfSyntheticImplDisplayTraitApplied() {
143137
if (shape.getTrait<SyntheticImplDisplayTrait>() == null) {
144138
return

codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/error/NestedErrorStructureTest.kt

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class NestedErrorStructureTest {
2424
private var sampleModel = File("../codegen-core/common-test-models/nested-error.smithy").readText().asSmithyModel()
2525
private val model = sampleModel.let(AddSyntheticTraitForImplDisplay::transform)
2626

27-
private val errorWithCompositeShape = model.lookup<StructureShape>("sample#ErrorWithCompositeShape")
27+
private val errorInInput = model.lookup<StructureShape>("sample#ErrorInInput")
2828
private val simpleError = model.lookup<StructureShape>("sample#SimpleError")
2929
private val errorWithDeepCompositeShape = model.lookup<StructureShape>("sample#ErrorWithDeepCompositeShape")
3030
private val composedSensitiveError = model.lookup<StructureShape>("sample#ComposedSensitiveError")
@@ -35,7 +35,7 @@ class NestedErrorStructureTest {
3535

3636
private val allStructures =
3737
arrayOf(
38-
errorWithCompositeShape,
38+
errorInInput,
3939
simpleError,
4040
errorWithDeepCompositeShape,
4141
composedSensitiveError,
@@ -46,7 +46,7 @@ class NestedErrorStructureTest {
4646
)
4747
private val errorShapes =
4848
arrayOf(
49-
errorWithCompositeShape,
49+
errorInInput,
5050
simpleError,
5151
errorWithDeepCompositeShape,
5252
errorWithNestedError,
@@ -95,27 +95,27 @@ class NestedErrorStructureTest {
9595
rustTemplate(
9696
"""
9797
let message = crate::test_model::ErrorMessage {
98-
status_code: "200".to_owned(),
98+
status_code: 333,
9999
error_message: "this is an error".to_owned(),
100100
request_id: None,
101-
tool_name : "vscode".to_owned()
101+
is_retryable: false,
102102
};
103103
let formatted = format!("{message}");
104-
assert_eq!(formatted, "ErrorMessage {status_code=200, error_message=this is an error, request_id=None, tool_name=vscode}");
104+
assert_eq!(formatted, "ErrorMessage {status_code=333, error_message=this is an error, request_id=None, is_retryable=false}");
105105
""",
106106
)
107107
}
108108
unitTest("optional_field_prints_value") {
109109
rustTemplate(
110110
"""
111111
let message = crate::test_model::ErrorMessage {
112-
status_code: "200".to_owned(),
112+
status_code: 419,
113113
error_message: "this is an error".to_owned(),
114114
request_id: Some("1234".to_owned()),
115-
tool_name : "vscode".to_owned()
115+
is_retryable : true,
116116
};
117117
let formatted = format!("{message}");
118-
assert_eq!(formatted, "ErrorMessage {status_code=200, error_message=this is an error, request_id=Some(1234), tool_name=vscode}");
118+
assert_eq!(formatted, "ErrorMessage {status_code=419, error_message=this is an error, request_id=Some(1234), is_retryable=true}");
119119
""",
120120
)
121121
}
@@ -142,21 +142,20 @@ class NestedErrorStructureTest {
142142
message: Some(crate::test_model::WrappedErrorMessage {
143143
some_value: Some(123),
144144
contained: Some(crate::test_model::ErrorMessage {
145-
status_code: "200".to_owned(),
145+
status_code: 509,
146146
error_message: "this is an error".to_owned(),
147147
request_id: Some("1234".to_owned()),
148-
tool_name: "vscode".to_owned(),
148+
is_retryable: false,
149149
}),
150150
}),
151151
}),
152152
};
153153
let formatted = format!("{message}");
154154
const EXPECTED: &str = "ErrorWithNestedError: ErrorWithDeepCompositeShape: \
155155
WrappedErrorMessage {some_value=Some(123), \
156-
contained=Some(ErrorMessage {status_code=200, \
156+
contained=Some(ErrorMessage {status_code=509, \
157157
error_message=this is an error, \
158-
request_id=Some(1234), \
159-
tool_name=vscode})}";
158+
request_id=Some(1234), is_retryable=false})}";
160159
assert_eq!(formatted, EXPECTED);
161160
""",
162161
)

codegen-server/python/src/main/kotlin/software/amazon/smithy/rust/codegen/server/python/smithy/generators/PythonServerEnumGenerator.kt

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,27 +59,20 @@ class PythonConstrainedEnum(
5959
}
6060

6161
private fun pyEnumName(context: EnumGeneratorContext): Writable =
62-
// Only named enums have a `name` property. Do not generate `fn name` for
63-
// unnamed enums.
64-
if (context.enumTrait.hasNames()) {
65-
writable {
66-
rustBlock(
67-
"""
68-
##[getter]
69-
pub fn name(&self) -> &str
70-
""",
71-
) {
72-
rustBlock("match self") {
73-
context.sortedMembers.forEach { member ->
74-
val memberName = member.name()?.name
75-
check(memberName != null) { "${context.enumTrait} cannot have null members" }
76-
rust("""${context.enumName}::$memberName => ${memberName?.dq()},""")
77-
}
62+
writable {
63+
rustBlock(
64+
"""
65+
##[getter]
66+
pub fn name(&self) -> &str
67+
""",
68+
) {
69+
rustBlock("match self") {
70+
context.sortedMembers.forEach { member ->
71+
val memberName = member.name()?.name
72+
rust("""${context.enumName}::$memberName => ${memberName?.dq()},""")
7873
}
7974
}
8075
}
81-
} else {
82-
writable {}
8376
}
8477
}
8578

0 commit comments

Comments
 (0)