]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
genie: Properly handle plain "get" or "set" property accessors
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 4 Nov 2021 21:34:47 +0000 (22:34 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 14 Nov 2021 12:07:11 +0000 (13:07 +0100)
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1248

tests/Makefile.am
tests/genie/class-property.gs [new file with mode: 0644]
vala/valagenieparser.vala

index 86e5e378fb0424e002bfb72e775496e140b03b63..0109ec20d9bf9912a62fe130491d1316b5b84a9e 100644 (file)
@@ -1151,6 +1151,7 @@ TESTS = \
        version/since-method.test \
        version/since-parameter.test \
        genie/class.gs \
+       genie/class-property.gs \
        genie/control-flow-if-do.gs \
        genie/control-flow-if-else.gs \
        genie/control-flow-if-else-if.gs \
diff --git a/tests/genie/class-property.gs b/tests/genie/class-property.gs
new file mode 100644 (file)
index 0000000..d536a7b
--- /dev/null
@@ -0,0 +1,16 @@
+init
+       var a = new Test()
+       a.foo = "foo"
+       assert( a.foo == "foo" )
+       assert( a.bar == "bar" )
+       a.manam = "manam"
+       assert( a.manam == "manam" )
+
+class Test:Object
+       prop foo:string
+       prop readonly bar:string
+               get
+                       return "bar"
+       prop manam:string
+               owned get
+               set construct
index 4173c4ae626eb1ca0fcea5a7cfda4b25d17222d8..6a3f790a43d68ae5b3c114c811b01f6afae72bc7 100644 (file)
@@ -3121,6 +3121,8 @@ public class Vala.Genie.Parser : CodeVisitor {
                                        if (accept_block ()) {
                                                block = parse_block ();
                                                prop.external = false;
+                                       } else {
+                                               accept (TokenType.EOL);
                                        }
                                        prop.get_accessor = new PropertyAccessor (true, false, false, value_type, block, get_src (accessor_begin));
                                        set_attributes (prop.get_accessor, attribs);
@@ -3146,6 +3148,8 @@ public class Vala.Genie.Parser : CodeVisitor {
                                        if (accept_block ()) {
                                                block = parse_block ();
                                                prop.external = false;
+                                       } else {
+                                               accept (TokenType.EOL);
                                        }
                                        prop.set_accessor = new PropertyAccessor (false, !readonly, _construct, value_type, block, get_src (accessor_begin));
                                        set_attributes (prop.set_accessor, attribs);