Skip to content

Commit c18a5bb

Browse files
authored
fix lifting options/results of empty record types in Java (#478)
This addresses the issue brought up in #473 (comment). Signed-off-by: Joel Dice <[email protected]>
1 parent 2c285a9 commit c18a5bb

File tree

1 file changed

+21
-13
lines changed
  • crates/gen-guest-teavm-java/src

1 file changed

+21
-13
lines changed

crates/gen-guest-teavm-java/src/lib.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -750,18 +750,22 @@ impl<'a> wit_bindgen_core::InterfaceGenerator<'a> for InterfaceGenerator<'a> {
750750
.collect::<Vec<_>>()
751751
.join("\n");
752752

753-
let fields = record
754-
.fields
755-
.iter()
756-
.map(|field| {
757-
format!(
758-
"public final {} {};",
759-
self.type_name(&field.ty),
760-
field.name.to_lower_camel_case()
761-
)
762-
})
763-
.collect::<Vec<_>>()
764-
.join("\n");
753+
let fields = if record.fields.is_empty() {
754+
format!("public static final {name} INSTANCE = new {name}();")
755+
} else {
756+
record
757+
.fields
758+
.iter()
759+
.map(|field| {
760+
format!(
761+
"public final {} {};",
762+
self.type_name(&field.ty),
763+
field.name.to_lower_camel_case()
764+
)
765+
})
766+
.collect::<Vec<_>>()
767+
.join("\n")
768+
};
765769

766770
uwrite!(
767771
self.src,
@@ -1135,7 +1139,11 @@ impl<'a, 'b> FunctionBindgen<'a, 'b> {
11351139
let payload = if self.gen.non_empty_type(case_ty.as_ref()).is_some() {
11361140
results.into_iter().next().unwrap()
11371141
} else if generics_position.is_some() {
1138-
format!("{}Tuple0.INSTANCE", self.gen.gen.qualifier())
1142+
if let Some(ty) = case_ty.as_ref() {
1143+
format!("{}.INSTANCE", self.gen.type_name(ty))
1144+
} else {
1145+
format!("{}Tuple0.INSTANCE", self.gen.gen.qualifier())
1146+
}
11391147
} else {
11401148
String::new()
11411149
};

0 commit comments

Comments
 (0)