Fix mismatched types in C# source gen

This commit is contained in:
grovre 2025-02-02 23:37:13 -06:00
parent ea249e3595
commit b244f7b292
2 changed files with 12 additions and 2 deletions

View File

@ -16,7 +16,11 @@ impl CodeWriter for InterfaceMap {
false, false,
|fmt| { |fmt| {
for (name, value) in ifaces { for (name, value) in ifaces {
writeln!(fmt, "public const nint {} = {:#X};", name, value)?; if *value > i32::MAX as u64 {
writeln!(fmt, "public static readonly nint {} = unchecked((nint){:#X});", name, value)?;
} else {
writeln!(fmt, "public const nint {} = {:#X};", name, value)?;
};
} }
Ok(()) Ok(())

View File

@ -41,7 +41,13 @@ impl CodeWriter for SchemaMap {
.members .members
.iter() .iter()
.map(|member| { .map(|member| {
format!("{} = {:#X}", member.name, member.value) let hex = format!("{:#X}", member.value);
let cast = if member.value == -1 {
format!("unchecked(({})-1)", type_name)
} else {
format!("{}", hex)
};
format!("{} = {}", member.name, cast)
}) })
.collect::<Vec<_>>() .collect::<Vec<_>>()
.join(",\n"); .join(",\n");