]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
valaparser: Improve handling of unowned/owned keyword occurrences
authorRico Tzschichholz <ricotz@ubuntu.com>
Fri, 24 Nov 2017 15:13:06 +0000 (16:13 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Fri, 24 Nov 2017 15:55:52 +0000 (16:55 +0100)
Don't throw an error on unexpected owned/unowned classification and
output why it is superfuous in this context.

vala/valaparser.vala

index 02677c686a3e72f02233933d07956544743368bb..59b4d5f299f896da8a0a25c91db329369b493d55 100644 (file)
@@ -438,9 +438,18 @@ public class Vala.Parser : CodeVisitor {
                                                Report.warning (get_last_src (), "deprecated syntax, use `unowned` modifier");
                                        }
                                        value_owned = false;
+                               } else if (accept (TokenType.OWNED)) {
+                                       Report.warning (get_last_src (), "`owned' is default in this context");
                                }
                        } else {
-                               value_owned = accept (TokenType.OWNED);
+                               if (accept (TokenType.OWNED)) {
+                                       value_owned = true;
+                               } else {
+                                       value_owned = false;
+                                       if (accept (TokenType.UNOWNED)) {
+                                               Report.warning (get_last_src (), "`unowned' is default in this context");
+                                       }
+                               }
                        }
                }
 
@@ -2807,7 +2816,14 @@ public class Vala.Parser : CodeVisitor {
                                var accessor_access = parse_access_modifier (SymbolAccessibility.PUBLIC);
 
                                var value_type = type.copy ();
-                               value_type.value_owned = accept (TokenType.OWNED);
+                               if (accept (TokenType.OWNED)) {
+                                       value_type.value_owned = true;
+                               } else {
+                                       value_type.value_owned = false;
+                                       if (accept (TokenType.UNOWNED)) {
+                                               Report.warning (get_last_src (), "property getters are `unowned' by default");
+                                       }
+                               }
 
                                if (accept (TokenType.GET)) {
                                        if (prop.get_accessor != null) {