summaryrefslogtreecommitdiffstats
path: root/generator/src/methods.rs
diff options
context:
space:
mode:
Diffstat (limited to 'generator/src/methods.rs')
-rw-r--r--generator/src/methods.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/generator/src/methods.rs b/generator/src/methods.rs
index 8039f96..93d5f57 100644
--- a/generator/src/methods.rs
+++ b/generator/src/methods.rs
@@ -555,14 +555,18 @@ impl ResponseType {
fn merge(self, other: Self) -> eyre::Result<Self> {
let headers = match (self.headers, other.headers) {
(Some(a), Some(b)) if a != b => eyre::bail!("incompatible header types in response"),
- (Some(a), None) => Some(format!("Option<{a}>")),
- (None, Some(b)) => Some(format!("Option<{b}>")),
+ (Some(a), None) if !a.starts_with("Option<") => Some(format!("Option<{a}>")),
+ (None, Some(b)) if !b.starts_with("Option<") => Some(format!("Option<{b}>")),
(a, b) => a.or(b),
};
let body = match (self.body.as_deref(), other.body.as_deref()) {
(Some(a), Some(b)) if a != b => eyre::bail!("incompatible header types in response"),
- (Some(a), Some("()") | None) => Some(format!("Option<{a}>")),
- (Some("()") | None, Some(b)) => Some(format!("Option<{b}>")),
+ (Some(a), Some("()") | None) if !a.starts_with("Option<") => {
+ Some(format!("Option<{a}>"))
+ }
+ (Some("()") | None, Some(b)) if !b.starts_with("Option<") => {
+ Some(format!("Option<{b}>"))
+ }
(_, _) => self.body.or(other.body),
};
use ResponseKind::*;