From: Rico Tzschichholz Date: Mon, 11 Dec 2017 08:08:25 +0000 (+0100) Subject: girparser: Don't mark simple-type out-parameters with '?' as nullable X-Git-Tag: 0.34.13~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdb133fdce2fca9e795fc9cb3fa5678eb08f72ed;p=thirdparty%2Fvala.git girparser: Don't mark simple-type out-parameters with '?' as nullable Using '?' on simple-types has a different meaning in vala and would create a boxed-type which is not compatible with the original type. --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index d51d469d1..d169cd7b7 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -3694,6 +3694,24 @@ public class Vala.GirParser : CodeVisitor { } } } + + // Do not mark out-parameters as nullable if they are simple-types, + // since it would result in a boxed-type in vala + foreach (ParameterInfo info in parameters) { + var type = info.param.variable_type; + if (info.param.direction == ParameterDirection.OUT && type.nullable) { + Struct? st = null; + if (type is UnresolvedType) { + st = resolve_symbol (node.parent, ((UnresolvedType) type).unresolved_symbol) as Struct; + } else if (type is ValueType) { + st = type.data_type as Struct; + } + if (st != null && st.is_simple_type ()) { + type.nullable = false; + } + } + } + if (parameters.size > 1) { ParameterInfo last_param = parameters[parameters.size-1]; if (last_param.param.ellipsis) {