]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girwriter: Don't use instance-parameter inside function elements
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 8 Apr 2025 18:52:42 +0000 (20:52 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 8 Apr 2025 18:52:42 +0000 (20:52 +0200)
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1606

codegen/valagirwriter.vala
tests/girwriter/GirTest-1.0.gir-expected
tests/girwriter/girtest.vala
tests/girwriter/girtest.vapi-expected
tests/girwriter/girtest.vapigen-expected

index 77388bb0559c491ce7ea9b02d9b549923be431f7..f71c60e470b9ccde281b75a99cddbdcb9519d5f8 100644 (file)
@@ -1210,7 +1210,7 @@ public class Vala.GIRWriter : CodeVisitor {
                                        type.nullable = true;
                                }
                                int skip = 0;
-                               if (tag_name == "callback") {
+                               if (tag_name == "function" || tag_name == "callback") {
                                        write_param_or_return (type, "parameter", ref skip, false, "self");
                                        index++;
                                } else {
index 0a22e2121d03eb715356aae2093a06850d40559c..724f406c67bdbd7071d015aa5422e035cf9d13b7 100644 (file)
                <member name="value2" c:identifier="GIR_TEST_ENUM_TEST_VALUE2" value="1"/>
                <member name="value3" c:identifier="GIR_TEST_ENUM_TEST_VALUE3" value="4711"/>
        </enumeration>
+       <function name="enum_test_enum_method" c:identifier="gir_test_enum_test_enum_method">
+               <return-value transfer-ownership="full">
+                       <type name="gint" c:type="gint"/>
+               </return-value>
+               <parameters>
+                       <parameter name="self" transfer-ownership="none">
+                               <type name="GirTest.EnumTest" c:type="GirTestEnumTest"/>
+                       </parameter>
+               </parameters>
+       </function>
        <bitfield name="FlagsTest" c:type="GirTestFlagsTest" glib:type-name="GirTestFlagsTest" glib:get-type="gir_test_flags_test_get_type">
                <member name="value1" c:identifier="GIR_TEST_FLAGS_TEST_VALUE1" value="1"/>
                <member name="value2" c:identifier="GIR_TEST_FLAGS_TEST_VALUE2" value="2"/>
index 20c87b74671226b2336998551f05fc214e7ffb26..09e6cc595be4411d6e2a69f1064f55a09fb4fd6e 100644 (file)
@@ -72,7 +72,11 @@ namespace GirTest {
        public enum EnumTest {
                VALUE1,
                VALUE2,
-               VALUE3 = 4711
+               VALUE3 = 4711;
+
+               public int enum_method () {
+                       return this;
+               }
        }
 
        [Flags]
index 5c75f2b5cc67b2566073a63fa970e16b413bb9ed..b9f51d7a7a68bf70b17a310f172fa7035b891d9f 100644 (file)
@@ -205,7 +205,8 @@ namespace GirTest {
        public enum EnumTest {
                VALUE1,
                VALUE2,
-               VALUE3
+               VALUE3;
+               public int enum_method ();
        }
        [CCode (cheader_filename = "girtest.h")]
        [Flags]
index 9ec22e5ad1b1d254475b0a8446c308571a926920..202d5e0db63e82de056ebad64177b6f84956fafa 100644 (file)
@@ -232,7 +232,8 @@ namespace GirTest {
        public enum EnumTest {
                VALUE1,
                VALUE2,
-               VALUE3
+               VALUE3;
+               public int enum_method ();
        }
        [CCode (cheader_filename = "girtest.h", cprefix = "GIR_TEST_FLAGS_TEST_", type_id = "gir_test_flags_test_get_type ()")]
        [Flags]