]> 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 11:40:41 +0000 (12:40 +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 ed3156efe85128dd7a291a3760e487a6b4f789ee..34968c15785b2dc27c7f1e92aa3350002871e1ab 100644 (file)
@@ -1212,6 +1212,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 a9ef565138db629a7dcccb7147d00bb976a4a559..d7f95cda9a1aa9bac30ad684ca59faeaf498b7b4 100644 (file)
@@ -3142,6 +3142,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);
@@ -3167,6 +3169,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);