]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: Don't accept methods as property-accessor which throw errors
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 29 Jan 2018 16:38:19 +0000 (17:38 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 30 Jan 2018 07:16:44 +0000 (08:16 +0100)
This should be considered a temporary fix.

https://bugzilla.gnome.org/show_bug.cgi?id=792998

vala/valagirparser.vala

index 50b71f0945db9fb1549e5259beff254dfb0ad4a7..5bc4d62cba28ed2ac8a05cd97f4c3773dee0e8f9 100644 (file)
@@ -994,7 +994,7 @@ public class Vala.GirParser : CodeVisitor {
                                                // ensure getter vfunc if the property is abstract
                                                if (m != null) {
                                                        getter.process (parser);
-                                                       if (m.return_type is VoidType || m.get_parameters().size != 0) {
+                                                       if (m.return_type is VoidType || m.get_parameters().size != 0 || m.get_error_types ().size > 0) {
                                                                prop.set_attribute ("NoAccessorMethod", true);
                                                        } else {
                                                                if (getter.name == name) {
@@ -1021,7 +1021,7 @@ public class Vala.GirParser : CodeVisitor {
                                                // ensure setter vfunc if the property is abstract
                                                if (m != null) {
                                                        setter.process (parser);
-                                                       if (!(m.return_type is VoidType || m.return_type is BooleanType) || m.get_parameters().size != 1) {
+                                                       if (!(m.return_type is VoidType || m.return_type is BooleanType) || m.get_parameters ().size != 1 || m.get_error_types ().size > 0) {
                                                                prop.set_attribute ("NoAccessorMethod", true);
                                                                prop.set_attribute ("ConcreteAccessor", false);
                                                        } else {