]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
parser: Implicit creation method of abstract classes must be protected
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 12 Mar 2019 09:18:03 +0000 (10:18 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Wed, 10 Apr 2019 14:26:19 +0000 (16:26 +0200)
tests/girwriter/girtest.vapi-expected
vala/valagenieparser.vala
vala/valaparser.vala

index 0612f09ffe7005e7815ad3515a4e9758053a8da8..e18b7314d3d82e1ef30c3f17a8e7b0fff2ca45e5 100644 (file)
@@ -2,7 +2,7 @@
 namespace GirTest {
        [CCode (cheader_filename = "girtest.h")]
        public abstract class AbstractObjectTest : GLib.Object {
-               public AbstractObjectTest ();
+               protected AbstractObjectTest ();
                public abstract void method_int8_in (int8 param);
                public abstract void method_int8_inout (ref int8 param);
                public abstract void method_int8_out (out int8 param);
index b7c6817557d823235bc56f4492be3e4a3f5d58a5..17ec6aaa779fd5364cf644a16cc7190d543f419f 100644 (file)
@@ -2705,7 +2705,7 @@ public class Vala.Genie.Parser : CodeVisitor {
                if (scanner.source_file.file_type == SourceFileType.SOURCE
                        && cl.default_construction_method == null) {
                        var m = new CreationMethod (cl.name, null, cl.source_reference);
-                       m.access = SymbolAccessibility.PUBLIC;
+                       m.access = (cl.is_abstract ? SymbolAccessibility.PROTECTED : SymbolAccessibility.PUBLIC);
                        m.body = new Block (cl.source_reference);
                        cl.add_method (m);
                }
index 67544a9b55ad6d6177a22aee8dd0882071e9b7c7..14a73640acf689b9ce3a0354c7522241e683ea31 100644 (file)
@@ -2587,7 +2587,7 @@ public class Vala.Parser : CodeVisitor {
                if (scanner.source_file.file_type == SourceFileType.SOURCE
                    && cl.default_construction_method == null) {
                        var m = new CreationMethod (cl.name, null, cl.source_reference);
-                       m.access = SymbolAccessibility.PUBLIC;
+                       m.access = (cl.is_abstract ? SymbolAccessibility.PROTECTED : SymbolAccessibility.PUBLIC);
                        m.body = new Block (cl.source_reference);
                        cl.add_method (m);
                }