[vala/staging] girwriter: Internal fields and function pointers are public
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging] girwriter: Internal fields and function pointers are public
- Date: Wed, 25 Sep 2019 12:34:24 +0000 (UTC)
commit 873ec677d771aba401cfc3d6fe67dd4f213dd3a3
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Tue Nov 27 08:11:14 2018 +0100
girwriter: Internal fields and function pointers are public
Fixes https://gitlab.gnome.org/GNOME/vala/issues/513
codegen/valagirwriter.vala | 10 +++
tests/girwriter/GirTest-1.0.gir-expected | 128 +++++++++++++++++++++++++++++++
tests/girwriter/Makefile.am | 1 +
tests/girwriter/girtest.vala | 15 ++++
tests/girwriter/girtest.vapi-expected | 2 +
5 files changed, 156 insertions(+)
---
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala
index 3406f8ee6..0dfe8bf8c 100644
--- a/codegen/valagirwriter.vala
+++ b/codegen/valagirwriter.vala
@@ -1677,6 +1677,16 @@ public class Vala.GIRWriter : CodeVisitor {
return true;
}
+ // internal fields and function pointers in classes/interfaces are public API
+ if (sym.access == SymbolAccessibility.INTERNAL) {
+ unowned Symbol? parent = sym.parent_symbol;
+ if (parent != null
+ && (parent is Class || parent is Interface)
+ && (sym is Field || (sym is Method && (((Method) sym).is_abstract || ((Method)
sym).is_virtual)))) {
+ return true;
+ }
+ }
+
return false;
}
diff --git a/tests/girwriter/GirTest-1.0.gir-expected b/tests/girwriter/GirTest-1.0.gir-expected
index 034f48418..db37ff8e8 100644
--- a/tests/girwriter/GirTest-1.0.gir-expected
+++ b/tests/girwriter/GirTest-1.0.gir-expected
@@ -114,6 +114,9 @@
<field name="field">
<type name="gint" c:type="gint"/>
</field>
+ <field name="internal_field">
+ <type name="gint" c:type="gint"/>
+ </field>
<field name="fixed_array_field">
<array fixed-size="23" c:type="gint*">
<type name="gint" c:type="gint"/>
@@ -238,6 +241,26 @@
</parameter>
</parameters>
</virtual-method>
+ <method name="internal_method_with_default_impl"
c:identifier="gir_test_object_test_internal_method_with_default_impl">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <virtual-method name="internal_method_with_default_impl"
invoker="internal_method_with_default_impl">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
<method name="int8_in" c:identifier="gir_test_object_test_int8_in">
<return-value transfer-ownership="full">
<type name="none"/>
@@ -707,6 +730,21 @@
</parameters>
</callback>
</field>
+ <field name="internal_method_with_default_impl">
+ <callback name="internal_method_with_default_impl"
c:type="internal_method_with_default_impl">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+ </parameter>
+ <parameter name="param" transfer-ownership="none">
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
<field name="coroutine_method_throw">
<callback name="coroutine_method_throw" c:type="coroutine_method_throw">
<return-value transfer-ownership="none">
@@ -849,6 +887,26 @@
<type name="none"/>
</return-value>
</virtual-method>
+ <method name="internal_method" c:identifier="gir_test_abstract_object_test_internal_method">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </method>
+ <virtual-method name="internal_method" invoker="internal_method">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
</class>
<record name="AbstractObjectTestClass" c:type="GirTestAbstractObjectTestClass"
glib:is-gtype-struct-for="AbstractObjectTest">
<field name="parent_class">
@@ -911,6 +969,21 @@
</parameters>
</callback>
</field>
+ <field name="internal_method">
+ <callback name="internal_method" c:type="internal_method">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GirTest.AbstractObjectTest"
c:type="GirTestAbstractObjectTest*"/>
+ </parameter>
+ <parameter name="param" transfer-ownership="none">
+ <type name="gint8" c:type="gint8"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
</record>
<record name="AbstractObjectTestPrivate" c:type="GirTestAbstractObjectTestPrivate" disguised="1"/>
<class name="ImplementionTest" c:type="GirTestImplementionTest"
glib:type-name="GirTestImplementionTest" glib:get-type="gir_test_implemention_test_get_type"
glib:type-struct="ImplementionTestClass" parent="GObject.Object">
@@ -1187,6 +1260,16 @@
</parameter>
</parameters>
</virtual-method>
+ <method name="internal_method" c:identifier="gir_test_interface_test_internal_method">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </method>
+ <virtual-method name="internal_method" invoker="internal_method">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ </virtual-method>
<property name="property" writable="1" construct="1">
<type name="gint" c:type="gint"/>
</property>
@@ -1273,6 +1356,18 @@
</parameters>
</callback>
</field>
+ <field name="internal_method">
+ <callback name="internal_method" c:type="internal_method">
+ <return-value transfer-ownership="full">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GirTest.InterfaceTest"
c:type="GirTestInterfaceTest*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
<field name="get_property">
<callback name="get_property" c:type="get_property">
<return-value transfer-ownership="none">
@@ -1300,6 +1395,33 @@
</parameters>
</callback>
</field>
+ <field name="get_internal_property">
+ <callback name="get_internal_property" c:type="get_internal_property">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GirTest.InterfaceTest"
c:type="GirTestInterfaceTest*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="set_internal_property">
+ <callback name="set_internal_property" c:type="set_internal_property">
+ <return-value transfer-ownership="none">
+ <type name="none"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GirTest.InterfaceTest"
c:type="GirTestInterfaceTest*"/>
+ </parameter>
+ <parameter name="value" transfer-ownership="none">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
</record>
<interface name="SkippedInterface" c:type="GirTestSkippedInterface"
glib:type-name="GirTestSkippedInterface" glib:get-type="gir_test_skipped_interface_get_type"
glib:type-struct="SkippedInterfaceIface" introspectable="0">
</interface>
@@ -1320,6 +1442,9 @@
<field name="field_name">
<type name="gint" c:type="gint"/>
</field>
+ <field name="internal_field_name">
+ <type name="gint" c:type="gint"/>
+ </field>
<function name="init" c:identifier="gir_test_boxed_struct_init">
<return-value transfer-ownership="none">
<type name="none"/>
@@ -1340,6 +1465,9 @@
<field name="field_name">
<type name="gint" c:type="gint"/>
</field>
+ <field name="internal_field_name">
+ <type name="gint" c:type="gint"/>
+ </field>
<function name="init" c:identifier="gir_test_struct_init">
<return-value transfer-ownership="none">
<type name="none"/>
diff --git a/tests/girwriter/Makefile.am b/tests/girwriter/Makefile.am
index f5770e9cd..44920b41d 100644
--- a/tests/girwriter/Makefile.am
+++ b/tests/girwriter/Makefile.am
@@ -8,6 +8,7 @@ check-girwriter: $(top_builddir)/compiler/valac
--pkg gio-2.0 \
--gir GirTest-1.0.gir \
--library girtest \
+ --header girtest.h \
--shared-library girtest \
$(srcdir)/girtest.vala; \
tail -n +3 girtest.vapi | diff -wu $(srcdir)/girtest.vapi-expected - || exit 1; \
diff --git a/tests/girwriter/girtest.vala b/tests/girwriter/girtest.vala
index 3ace08a5b..c4ea25bef 100644
--- a/tests/girwriter/girtest.vala
+++ b/tests/girwriter/girtest.vala
@@ -2,6 +2,7 @@
namespace GirTest {
public struct BoxedStruct {
public int field_name;
+ internal int internal_field_name;
public BoxedStruct () {
}
@@ -13,6 +14,7 @@ namespace GirTest {
[CCode (has_type_id = false)]
public struct Struct {
public int field_name;
+ internal int internal_field_name;
public Struct () {
}
@@ -67,10 +69,13 @@ namespace GirTest {
public interface InterfaceTest : Object {
public abstract int property { get; construct set; }
+ internal abstract string internal_property { get; set; }
public virtual void int8_in (int8 param) {
}
public virtual async void coroutine_async () {
}
+ internal virtual void internal_method () {
+ }
}
[GIR (visible = false)]
@@ -101,6 +106,8 @@ namespace GirTest {
public int field = 42;
+ internal int internal_field = 23;
+
public int fixed_array_field[23];
public string? nullable_field;
@@ -111,6 +118,8 @@ namespace GirTest {
public string construct_only_property { construct; }
+ internal string internal_property { get; set; }
+
[GIR (visible = false)]
public string skipped_property { get; construct set; }
@@ -152,6 +161,9 @@ namespace GirTest {
public virtual void method_with_default_impl (int8 param) {
}
+ internal virtual void internal_method_with_default_impl (int8 param) {
+ }
+
public void int8_in (int8 param) {
}
@@ -258,6 +270,8 @@ namespace GirTest {
public abstract void method_int8_out (out int8 param);
public abstract void method_throw () throws ErrorTest;
+
+ internal abstract void internal_method (int8 param);
}
public interface PrerequisiteTest : InterfaceTest {
@@ -265,6 +279,7 @@ namespace GirTest {
public class ImplementionTest : Object, InterfaceTest {
public int property { get; construct set; }
+ internal string internal_property { get; set; }
}
[GIR (visible = false)]
diff --git a/tests/girwriter/girtest.vapi-expected b/tests/girwriter/girtest.vapi-expected
index 52d23d16a..4eae4252b 100644
--- a/tests/girwriter/girtest.vapi-expected
+++ b/tests/girwriter/girtest.vapi-expected
@@ -112,6 +112,7 @@ namespace GirTest {
[CCode (cheader_filename = "girtest.h")]
public struct BoxedStruct {
public int field_name;
+ public int internal_field_name;
public BoxedStruct ();
public void inv ();
}
@@ -123,6 +124,7 @@ namespace GirTest {
[CCode (cheader_filename = "girtest.h", has_type_id = false)]
public struct Struct {
public int field_name;
+ public int internal_field_name;
public Struct ();
public void inv ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]