]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Ensure that classes in implicit namespaces are not private as namespaces
authorJürg Billeter <j@bitron.ch>
Fri, 30 Jan 2009 17:17:45 +0000 (17:17 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 30 Jan 2009 17:17:45 +0000 (17:17 +0000)
2009-01-30  Jürg Billeter  <j@bitron.ch>

* vala/valanamespace.vala:
* vala/valaparser.vala:

Ensure that classes in implicit namespaces are not private as
namespaces cannot have private members

svn path=/trunk/; revision=2411

ChangeLog
vala/valanamespace.vala
vala/valaparser.vala

index 9fc9271e1d9b6ed7359d820497d69f851e1ee932..c2d2922f1ae9bd69f5c853d5ea62fb103aabf4d9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-01-30  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valanamespace.vala:
+       * vala/valaparser.vala:
+
+       Ensure that classes in implicit namespaces are not private as
+       namespaces cannot have private members
+
 2009-01-30  Jürg Billeter  <j@bitron.ch>
 
        * vapi/posix.vapi:
index 2a46ec7f72e5fc22d29cc18f769b81ac2dd7ce78..ac8623bb97fe2ae620827a1065203b1730a53604 100644 (file)
@@ -1,6 +1,6 @@
 /* valanamespace.vala
  *
- * Copyright (C) 2006-2008  Jürg Billeter
+ * Copyright (C) 2006-2009  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -119,6 +119,11 @@ public class Vala.Namespace : Symbol {
         * @param cl a class
         */
        public void add_class (Class cl) {
+               // namespaces do not support private memebers
+               if (cl.access == SymbolAccessibility.PRIVATE) {
+                       cl.access = SymbolAccessibility.INTERNAL;
+               }
+
                if (scope.lookup (cl.name) is Class) {
                        // merge
                        var old_class = (Class) scope.lookup (cl.name);
@@ -151,6 +156,11 @@ public class Vala.Namespace : Symbol {
         * @param iface an interface
         */
        public void add_interface (Interface iface) {
+               // namespaces do not support private memebers
+               if (iface.access == SymbolAccessibility.PRIVATE) {
+                       iface.access = SymbolAccessibility.INTERNAL;
+               }
+
                interfaces.add (iface);
                scope.add (iface.name, iface);
        }
@@ -161,6 +171,11 @@ public class Vala.Namespace : Symbol {
         * @param st a struct
         */
        public void add_struct (Struct st) {
+               // namespaces do not support private memebers
+               if (st.access == SymbolAccessibility.PRIVATE) {
+                       st.access = SymbolAccessibility.INTERNAL;
+               }
+
                structs.add (st);
                scope.add (st.name, st);
        }
@@ -181,6 +196,11 @@ public class Vala.Namespace : Symbol {
         * @param en an enum
         */
        public void add_enum (Enum en) {
+               // namespaces do not support private memebers
+               if (en.access == SymbolAccessibility.PRIVATE) {
+                       en.access = SymbolAccessibility.INTERNAL;
+               }
+
                enums.add (en);
                scope.add (en.name, en);
        }
@@ -191,6 +211,11 @@ public class Vala.Namespace : Symbol {
         * @param edomain an error domain
         */
        public void add_error_domain (ErrorDomain edomain) {
+               // namespaces do not support private memebers
+               if (edomain.access == SymbolAccessibility.PRIVATE) {
+                       edomain.access = SymbolAccessibility.INTERNAL;
+               }
+
                error_domains.add (edomain);
                scope.add (edomain.name, edomain);
        }
@@ -201,6 +226,11 @@ public class Vala.Namespace : Symbol {
         * @param d a delegate
         */
        public void add_delegate (Delegate d) {
+               // namespaces do not support private memebers
+               if (d.access == SymbolAccessibility.PRIVATE) {
+                       d.access = SymbolAccessibility.INTERNAL;
+               }
+
                delegates.add (d);
                scope.add (d.name, d);
        }
@@ -292,6 +322,11 @@ public class Vala.Namespace : Symbol {
         * @param constant a constant
         */
        public void add_constant (Constant constant) {
+               // namespaces do not support private memebers
+               if (constant.access == SymbolAccessibility.PRIVATE) {
+                       constant.access = SymbolAccessibility.INTERNAL;
+               }
+
                constants.add (constant);
                scope.add (constant.name, constant);
        }
@@ -302,6 +337,11 @@ public class Vala.Namespace : Symbol {
         * @param f a field
         */
        public void add_field (Field f) {
+               // namespaces do not support private memebers
+               if (f.access == SymbolAccessibility.PRIVATE) {
+                       f.access = SymbolAccessibility.INTERNAL;
+               }
+
                if (f.binding == MemberBinding.INSTANCE) {
                        Report.error (f.source_reference, "instance members are not allowed outside of data types");
                        f.error = true;
@@ -322,6 +362,11 @@ public class Vala.Namespace : Symbol {
         * @param m a method
         */
        public void add_method (Method m) {
+               // namespaces do not support private memebers
+               if (m.access == SymbolAccessibility.PRIVATE) {
+                       m.access = SymbolAccessibility.INTERNAL;
+               }
+
                if (m is CreationMethod) {
                        Report.error (m.source_reference, "construction methods may only be declared within classes and structs");
                        m.error = true;
index 2aeb0ce2d0aaa73f890442a07f46be43c6b5a096..d0514daa3eb64fb51c4bdcf5afcd009d75eb9548 100644 (file)
@@ -1913,11 +1913,6 @@ public class Vala.Parser : CodeVisitor {
        void parse_namespace_member (Namespace ns) throws ParseError {
                var sym = parse_declaration ();
 
-               // namespaces do not support private memebers
-               if (sym.access == SymbolAccessibility.PRIVATE) {
-                       sym.access = SymbolAccessibility.INTERNAL;
-               }
-
                if (sym is Namespace) {
                        ns.add_namespace ((Namespace) sym);
                } else if (sym is Class) {