this.declarator_suffix = declarator_suffix;
}
- public CCodeVariableDeclarator.zero (string name, CCodeExpression initializer, string? declarator_suffix = null) {
+ public CCodeVariableDeclarator.zero (string name, CCodeExpression? initializer, string? declarator_suffix = null) {
this.name = name;
this.initializer = initializer;
this.declarator_suffix = declarator_suffix;
vardecl.initializer = memset_call;
vardecl.init0 = true;
} else if (!local.variable_type.nullable &&
- (st != null && !st.is_simple_type ()) ||
+ (st != null && st.get_fields ().size > 0) ||
(array_type != null && array_type.fixed_length)) {
// 0-initialize struct with struct initializer { 0 }
// necessary as they will be passed by reference
return memset_call;
} else if (initializer_expression && !type.nullable &&
- ((st != null && !st.is_simple_type ()) ||
+ ((st != null && st.get_fields ().size > 0) ||
(array_type != null && array_type.fixed_length))) {
// 0-initialize struct with struct initializer { 0 }
// only allowed as initializer expression in C
if (acc.readable) {
var cdecl = new CCodeDeclaration (acc.value_type.get_cname ());
- cdecl.add_declarator (new CCodeVariableDeclarator ("result", default_value_for_type (acc.value_type, true)));
+ cdecl.add_declarator (new CCodeVariableDeclarator.zero ("result", default_value_for_type (acc.value_type, true)));
function.block.prepend_statement (cdecl);
function.block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("result")));
if (!(m.return_type is VoidType) && !(m.return_type is GenericType)) {
var cdecl = new CCodeDeclaration (m.return_type.get_cname ());
- cdecl.add_declarator (new CCodeVariableDeclarator ("result", default_value_for_type (m.return_type, true)));
+ cdecl.add_declarator (new CCodeVariableDeclarator.zero ("result", default_value_for_type (m.return_type, true)));
cinit.append (cdecl);
function.block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("result")));