diff --git a/Sources/_OpenAPIGeneratorCore/Translator/Responses/translateResponseOutcome.swift b/Sources/_OpenAPIGeneratorCore/Translator/Responses/translateResponseOutcome.swift index b0b1fcd4..9f12dc46 100644 --- a/Sources/_OpenAPIGeneratorCore/Translator/Responses/translateResponseOutcome.swift +++ b/Sources/_OpenAPIGeneratorCore/Translator/Responses/translateResponseOutcome.swift @@ -87,6 +87,37 @@ extension TypesFileTranslator { staticMemberDecl = nil } + var throwingGetterCases: [SwitchCaseDescription] = [ + SwitchCaseDescription( + kind: .case( + .dot(responseKind.identifier), + responseKind.wantsStatusCode ? ["_", "response"] : ["response"] + ), + body: [.expression(.return(.identifierPattern("response")))] + ) + ] + if !operation.containsDefaultResponse || operation.responseOutcomes.count > 1 { + throwingGetterCases.append( + SwitchCaseDescription( + kind: .default, + body: [ + .expression( + .try( + .identifierPattern("throwUnexpectedResponseStatus") + .call([ + .init( + label: "expectedStatus", + expression: .literal(.string(responseKind.prettyName)) + ), + .init(label: "response", expression: .identifierPattern("self")), + ]) + ) + ) + ] + ) + ) + } + let throwingGetterDesc = VariableDescription( accessModifier: config.access, kind: .var, @@ -96,31 +127,7 @@ extension TypesFileTranslator { .expression( .switch( switchedExpression: .identifierPattern("self"), - cases: [ - SwitchCaseDescription( - kind: .case( - .dot(responseKind.identifier), - responseKind.wantsStatusCode ? ["_", "response"] : ["response"] - ), - body: [.expression(.return(.identifierPattern("response")))] - ), - SwitchCaseDescription( - kind: .default, - body: [ - .expression( - .try( - .identifierPattern("throwUnexpectedResponseStatus") - .call([ - .init( - label: "expectedStatus", - expression: .literal(.string(responseKind.prettyName)) - ), .init(label: "response", expression: .identifierPattern("self")), - ]) - ) - ) - ] - ), - ] + cases: throwingGetterCases ) ) ], diff --git a/Tests/OpenAPIGeneratorReferenceTests/SnippetBasedReferenceTests.swift b/Tests/OpenAPIGeneratorReferenceTests/SnippetBasedReferenceTests.swift index f3a59d0d..b697174e 100644 --- a/Tests/OpenAPIGeneratorReferenceTests/SnippetBasedReferenceTests.swift +++ b/Tests/OpenAPIGeneratorReferenceTests/SnippetBasedReferenceTests.swift @@ -3416,11 +3416,6 @@ final class SnippetBasedReferenceTests: XCTestCase { switch self { case let .`default`(_, response): return response - default: - try throwUnexpectedResponseStatus( - expectedStatus: "default", - response: self - ) } } }