genbindings: handle the case when RequireCpp needs to return void

This commit is contained in:
mappu 2025-04-15 20:56:46 +12:00
parent bc4a22f142
commit 2c2344e786

View File

@ -1233,21 +1233,28 @@ extern "C" {
} }
if m.RequireCpp != nil { if m.RequireCpp != nil {
var unavailableRetn string
if retnCabi := m.ReturnType.RenderTypeCabi(); retnCabi == "void" {
unavailableRetn = "\treturn;\n"
} else {
unavailableRetn = "\t" + retnCabi + " _ret_unavailable;\n" +
"\treturn _ret_unavailable;\n"
}
ret.WriteString(fmt.Sprintf( ret.WriteString(fmt.Sprintf(
"%s %s_%s(%s) {\n"+ "%s %s_%s(%s) {\n"+
"#if "+*m.RequireCpp+"\n"+ "#if "+*m.RequireCpp+"\n"+
"%s"+ "%s"+
"%s"+ "%s"+
"#else\n"+ "#else\n"+
"\t%s _ret_unavailable;\n"+ "%s"+
"\treturn _ret_unavailable;\n"+
"#endif\n"+ "#endif\n"+
"}\n"+ "}\n"+
"\n", "\n",
m.ReturnType.RenderTypeCabi(), methodPrefixName, m.SafeMethodName(), emitParametersCabi(m, ifv(m.IsConst, "const ", "")+methodPrefixName+"*"), m.ReturnType.RenderTypeCabi(), methodPrefixName, m.SafeMethodName(), emitParametersCabi(m, ifv(m.IsConst, "const ", "")+methodPrefixName+"*"),
preamble, preamble,
emitAssignCppToCabi("\treturn ", m.ReturnType, callTarget), emitAssignCppToCabi("\treturn ", m.ReturnType, callTarget),
m.ReturnType.RenderTypeCabi(), unavailableRetn,
)) ))
} else if m.BecomesNonConstInVersion != nil { } else if m.BecomesNonConstInVersion != nil {