Unverified Commit cfd1627f authored by 82marbag's avatar 82marbag Committed by GitHub
Browse files

Must set a member in unions (#2241)



* Must set a member in unions

Signed-off-by: default avatarDaniele Ahmed <ahmeddan@amazon.de>
parent 074464e1
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -523,6 +523,7 @@ class JsonParserGenerator(
                "Shape" to returnSymbolToParse.symbol,
            ) {
                rust("let mut variant = None;")
                val checkValueSet = !shape.members().all { it.isTargetUnit() } && !codegenTarget.renderUnknownVariant()
                rustBlock("match tokens.next().transpose()?") {
                    rustBlockTemplate(
                        """
@@ -555,7 +556,7 @@ class JsonParserGenerator(
                                        } else {
                                            withBlock("Some(#T::$variantName(", "))", returnSymbolToParse.symbol) {
                                                deserializeMember(member)
                                                unwrapOrDefaultOrError(member)
                                                unwrapOrDefaultOrError(member, checkValueSet)
                                            }
                                        }
                                    }
@@ -593,8 +594,8 @@ class JsonParserGenerator(
        rust("#T(tokens)?", nestedParser)
    }

    private fun RustWriter.unwrapOrDefaultOrError(member: MemberShape) {
        if (symbolProvider.toSymbol(member).canUseDefault()) {
    private fun RustWriter.unwrapOrDefaultOrError(member: MemberShape, checkValueSet: Boolean) {
        if (symbolProvider.toSymbol(member).canUseDefault() && !checkValueSet) {
            rust(".unwrap_or_default()")
        } else {
            rustTemplate(
+0 −2
Original line number Diff line number Diff line
@@ -774,8 +774,6 @@ class ServerProtocolTestGenerator(

            FailingTest(RestJson, "RestJsonWithBodyExpectsApplicationJsonContentType", TestType.MalformedRequest),

            FailingTest(RestJson, "RestJsonMalformedUnionNoFieldsSet", TestType.MalformedRequest),

            // Tests involving constraint traits, which are not yet fully implemented.
            // See https://github.com/awslabs/smithy-rs/issues/1401.
            FailingTest(RestJsonValidation, "RestJsonMalformedRangeFloat_case0", TestType.MalformedRequest),