summaryrefslogtreecommitdiff
path: root/vapigen/valagidlparser.vala
diff options
context:
space:
mode:
Diffstat (limited to 'vapigen/valagidlparser.vala')
-rw-r--r--vapigen/valagidlparser.vala6
1 files changed, 5 insertions, 1 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index b686be288..86924417f 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -1682,6 +1682,7 @@ public class Vala.GIdlParser : CodeVisitor {
bool set_delegate_target_pos = false;
double delegate_target_pos = 0;
bool array_requested = false;
+ bool out_requested = false;
attributes = get_attributes ("%s.%s".printf (symbol, param_node.name));
if (attributes != null) {
foreach (string attr in attributes) {
@@ -1690,12 +1691,15 @@ public class Vala.GIdlParser : CodeVisitor {
if (eval (nv[1]) == "1") {
param_type = new ArrayType (param_type, 1, param_type.source_reference);
p.parameter_type = param_type;
- p.direction = ParameterDirection.IN;
+ if (!out_requested) {
+ p.direction = ParameterDirection.IN;
+ }
array_requested = true;
}
} else if (nv[0] == "is_out") {
if (eval (nv[1]) == "1") {
p.direction = ParameterDirection.OUT;
+ out_requested = true;
if (!array_requested && param_type is ArrayType) {
var array_type = (ArrayType) param_type;
param_type = array_type.element_type;