[vala/staging] girparser: Never skip "function" elements
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging] girparser: Never skip "function" elements
- Date: Thu, 5 Aug 2021 13:31:11 +0000 (UTC)
commit f3a8f1a6444ae0ab59ec4bd6496a7c1025785ad4
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Tue Aug 3 18:11:06 2021 +0200
girparser: Never skip "function" elements
tests/girwriter/GirTest-1.0.gir-expected | 32 ++++++++++++++++++++++++++++++++
tests/girwriter/girtest.vala | 10 ++++++++++
tests/girwriter/girtest.vapi-expected | 2 ++
tests/girwriter/girtest.vapigen-expected | 6 ++++++
vala/valagirparser.vala | 8 ++++----
5 files changed, 54 insertions(+), 4 deletions(-)
---
diff --git a/tests/girwriter/GirTest-1.0.gir-expected b/tests/girwriter/GirTest-1.0.gir-expected
index 74acb9b7b..b40cdddae 100644
--- a/tests/girwriter/GirTest-1.0.gir-expected
+++ b/tests/girwriter/GirTest-1.0.gir-expected
@@ -2760,6 +2760,22 @@
</parameter>
</parameters>
</function>
+ <function name="foo" c:identifier="gir_test_boxed_struct_init_foo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="param1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="param2" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="result" direction="out" transfer-ownership="full"
caller-allocates="1">
+ <type name="GirTest.BoxedStruct" c:type="GirTestBoxedStruct*"/>
+ </parameter>
+ </parameters>
+ </function>
<method name="inv" c:identifier="gir_test_boxed_struct_inv">
<return-value transfer-ownership="full">
<type name="none" c:type="void"/>
@@ -2788,6 +2804,22 @@
</parameter>
</parameters>
</function>
+ <function name="foo" c:identifier="gir_test_struct_init_foo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="param1" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="param2" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="result" direction="out" transfer-ownership="full"
caller-allocates="1">
+ <type name="GirTest.Struct" c:type="GirTestStruct*"/>
+ </parameter>
+ </parameters>
+ </function>
<method name="inv" c:identifier="gir_test_struct_inv">
<return-value transfer-ownership="full">
<type name="none" c:type="void"/>
diff --git a/tests/girwriter/girtest.vala b/tests/girwriter/girtest.vala
index e9f952ef9..0bc88d93e 100644
--- a/tests/girwriter/girtest.vala
+++ b/tests/girwriter/girtest.vala
@@ -7,6 +7,11 @@ namespace GirTest {
public BoxedStruct () {
}
+ public BoxedStruct.foo (int param1, int param2) {
+ field_name = param1;
+ internal_field_name = param2;
+ }
+
public void inv () {
}
}
@@ -19,6 +24,11 @@ namespace GirTest {
public Struct () {
}
+ public Struct.foo (int param1, int param2) {
+ field_name = param1;
+ internal_field_name = param2;
+ }
+
public void inv () {
}
}
diff --git a/tests/girwriter/girtest.vapi-expected b/tests/girwriter/girtest.vapi-expected
index 89e794b1d..e2eee7fab 100644
--- a/tests/girwriter/girtest.vapi-expected
+++ b/tests/girwriter/girtest.vapi-expected
@@ -170,6 +170,7 @@ namespace GirTest {
public int field_name;
public int internal_field_name;
public BoxedStruct ();
+ public BoxedStruct.foo (int param1, int param2);
public void inv ();
}
[CCode (cheader_filename = "girtest.h")]
@@ -187,6 +188,7 @@ namespace GirTest {
public int field_name;
public int internal_field_name;
public Struct ();
+ public Struct.foo (int param1, int param2);
public void inv ();
}
[CCode (cheader_filename = "girtest.h")]
diff --git a/tests/girwriter/girtest.vapigen-expected b/tests/girwriter/girtest.vapigen-expected
index 9287919f8..e4fe02ae0 100644
--- a/tests/girwriter/girtest.vapigen-expected
+++ b/tests/girwriter/girtest.vapigen-expected
@@ -197,6 +197,9 @@ namespace GirTest {
public struct BoxedStruct {
public int field_name;
public int internal_field_name;
+ [CCode (cname = "gir_test_boxed_struct_init_foo")]
+ public static GirTest.BoxedStruct foo (int param1, int param2);
+ public static GirTest.BoxedStruct init ();
public void inv ();
}
[CCode (cheader_filename = "girtest.h", has_type_id = false)]
@@ -210,6 +213,9 @@ namespace GirTest {
public struct Struct {
public int field_name;
public int internal_field_name;
+ [CCode (cname = "gir_test_struct_init_foo")]
+ public static GirTest.Struct foo (int param1, int param2);
+ public static GirTest.Struct init ();
public void inv ();
}
[CCode (cheader_filename = "girtest.h", cprefix = "GIR_TEST_ENUM_TEST_", type_id =
"gir_test_enum_test_get_type ()")]
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 2345c355e..02b5538b5 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -2480,7 +2480,7 @@ public class Vala.GirParser : CodeVisitor {
calculate_common_prefix (ref common_prefix, old_current.get_cname ());
}
} else if (reader.name == "function") {
- skip_element ();
+ parse_method ("function");
} else if (reader.name == "function-macro") {
skip_element ();
} else {
@@ -2940,7 +2940,7 @@ public class Vala.GirParser : CodeVisitor {
} else if (reader.name == "method") {
parse_method ("method");
} else if (reader.name == "function") {
- skip_element ();
+ parse_method ("function");
} else if (reader.name == "function-macro") {
skip_element ();
} else if (reader.name == "union") {
@@ -3584,7 +3584,7 @@ public class Vala.GirParser : CodeVisitor {
unref_method = old_current;
}
} else if (reader.name == "function") {
- skip_element ();
+ parse_method ("function");
} else if (reader.name == "function-macro") {
skip_element ();
} else if (reader.name == "union") {
@@ -3673,7 +3673,7 @@ public class Vala.GirParser : CodeVisitor {
} else if (reader.name == "method") {
parse_method ("method");
} else if (reader.name == "function") {
- skip_element ();
+ parse_method ("function");
} else if (reader.name == "function-macro") {
skip_element ();
} else if (reader.name == "record") {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]