Skip to content

Commit 3458e37

Browse files
committed
augh
1 parent f7b1651 commit 3458e37

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

capnpc/src/codegen.rs

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,6 +1958,7 @@ fn generate_union(
19581958
params_struct_string: &mut String,
19591959
params_struct_impl_string: &mut String,
19601960
params_enum_string: &mut String,
1961+
set_types: &mut String,
19611962
set_inner: &mut String,
19621963
generate_params: bool,
19631964
union_only_struct: bool,
@@ -2302,6 +2303,7 @@ fn generate_union(
23022303
if !union_only_struct {
23032304
params_struct_string
23042305
.push_str(format!("\n pub uni: {params_union_name}{bracketed},").as_str());
2306+
set_types.push_str(format!(", uni: {params_union_name}{bracketed}").as_str());
23052307
}
23062308
if !params_impl_interior.is_empty() {
23072309
params_struct_impl_string.push_str(format!("{params_impl_interior}\n }}").as_str());
@@ -3154,6 +3156,7 @@ fn generate_node(
31543156
&mut params_struct_string,
31553157
rust_struct_impl_inner,
31563158
&mut params_enum_string,
3159+
&mut set_types,
31573160
&mut set_inner,
31583161
true,
31593162
union_only_struct,
@@ -3177,6 +3180,7 @@ fn generate_node(
31773180
&mut params_struct_impl_string,
31783181
&mut params_enum_string,
31793182
&mut String::new(),
3183+
&mut String::new(),
31803184
false,
31813185
union_only_struct,
31823186
&params_union_name,
@@ -3196,29 +3200,20 @@ fn generate_node(
31963200
reexports.push_str("};");
31973201
preamble.push(Line(reexports));
31983202
preamble.push(BlankLine);
3199-
let mut without_where = String::new();
3200-
let bracketed = if union_only_struct {
3201-
without_where.push_str(format!("<{union_lifetime}").as_str());
3202-
for p in union_params.iter() {
3203-
without_where.push_str(format!("{p},").as_str());
3204-
}
3205-
without_where.push('>');
3203+
let enum_bracketed = if union_only_struct {
3204+
set_inner = String::new();
32063205
bracketed_with_where.clone()
32073206
} else if !union_params.is_empty() || !union_lifetime.is_empty() {
32083207
let mut temp = format!("<{union_lifetime}");
3209-
without_where.push_str(format!("<{union_lifetime}").as_str());
32103208
for p in union_params.iter() {
32113209
temp.push_str(format!("{p}: ::capnp::traits::Owned,").as_str());
3212-
without_where.push_str(format!("{p},").as_str());
32133210
}
32143211
temp.push('>');
3215-
without_where.push('>');
32163212
temp
32173213
} else {
32183214
"".to_string()
32193215
};
3220-
params_enum_string = format!("pub enum {params_union_name}{bracketed} {{\n UNINITIALIZED,{params_enum_string}");
3221-
set_types.push_str(format!(", uni: {params_union_name}{without_where}").as_str());
3216+
params_enum_string = format!("pub enum {params_union_name}{enum_bracketed} {{\n UNINITIALIZED,{params_enum_string}");
32223217
}
32233218

32243219
if !params_enum_string.is_empty() {
@@ -3235,11 +3230,15 @@ fn generate_node(
32353230
)
32363231
.as_str(),
32373232
);
3238-
let set = Branch(vec![
3239-
Line(format!("pub fn set(&mut self{set_types}) {{")),
3240-
indent(Line(format!(" {set_inner}"))),
3241-
Line("}".to_string()),
3242-
]);
3233+
let set = if set_inner.is_empty() {
3234+
BlankLine
3235+
} else {
3236+
Branch(vec![
3237+
Line(format!("pub fn set(&mut self{set_types}) {{")),
3238+
indent(Line(format!(" {set_inner}"))),
3239+
Line("}".to_string()),
3240+
])
3241+
};
32433242
if !is_params_struct {
32443243
params_struct_string.push_str(rust_struct_inner);
32453244
params_struct_impl_string.push_str(rust_struct_impl_inner);

0 commit comments

Comments
 (0)